Skip to content

Commit 38c6517

Browse files
committed
cleanup and add a command line option for mdapi device index
1 parent 40baa09 commit 38c6517

File tree

2 files changed

+60
-115
lines changed

2 files changed

+60
-115
lines changed

cliloader/cliloader.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,14 @@ static bool parseArguments(int argc, char *argv[])
501501
mdapiGroup = argv[i];
502502
}
503503
}
504+
else if( !strcmp(argv[i], "--mdapi-device") )
505+
{
506+
++i;
507+
if( i < argc )
508+
{
509+
checkSetEnv("CLI_DevicePerfCounterAdapterIndex", argv[i]);
510+
}
511+
}
504512
else if( !strcmp(argv[i], "-h") || !strcmp(argv[i], "--host-timing") )
505513
{
506514
checkSetEnv("CLI_HostPerformanceTiming", "1");
@@ -624,6 +632,7 @@ static bool parseArguments(int argc, char *argv[])
624632
" --mdapi-ebs Report Event-Based MDAPI Metrics (Intel GPU Only)\n"
625633
" --mdapi-tbs Report Time-Based MDAPI Metrics (Intel GPU Only)\n"
626634
" --mdapi-group <NAME> Choose MDAPI Metrics to Collect (Intel GPU Only)\n"
635+
" --mdapi-device <INDEX> Choose MDAPI Device for Metrics (Intel GPU Only)\n"
627636
" --host-timing [-h] Report Host API Execution Time\n"
628637
" --capture-enqueue <NUMBER> Capture the Specified Kernel Enqueue\n"
629638
" --capture-kernel <NAME> Capture the Specified Kernel Name\n"

cliloader/printmetrics.h

Lines changed: 51 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ static bool printMetricsForDevice(IMetricsDeviceLatest* pMetricsDevice)
132132
return true;
133133
}
134134

135-
static bool printMetricsForAdapterGroup(void* pLibrary)
135+
static bool printMetricsForAdapterGroup(void* pLibrary, bool devicesOnly)
136136
{
137137
TCompletionCode res = CC_OK;
138138

@@ -173,7 +173,7 @@ static bool printMetricsForAdapterGroup(void* pLibrary)
173173
}
174174
else
175175
{
176-
fprintf(stderr, "Found %u MDAPI Adapter%s.\n\n",
176+
fprintf(stderr, "Found %u MDAPI Adapter%s:\n",
177177
pAdapterGroupParams->AdapterCount,
178178
pAdapterGroupParams->AdapterCount > 1 ? "s" : "");
179179
for (uint32_t a = 0; a < pAdapterGroupParams->AdapterCount; a++)
@@ -192,7 +192,7 @@ static bool printMetricsForAdapterGroup(void* pLibrary)
192192
continue;
193193
}
194194

195-
fprintf(stderr, "\nAdapter %u: %s (%s)\n",
195+
fprintf(stderr, "Adapter %u: %s (%s)\n",
196196
a,
197197
pAdapterParams->ShortName,
198198
adapterTypeToString(pAdapterParams->Type));
@@ -202,22 +202,52 @@ static bool printMetricsForAdapterGroup(void* pLibrary)
202202
pAdapterParams->BusNumber,
203203
pAdapterParams->DeviceNumber,
204204
pAdapterParams->FunctionNumber);
205-
fprintf(stderr, "########################################\n\n");
206-
207-
IMetricsDeviceLatest* pMetricsDevice = NULL;
208-
res = pAdapter->OpenMetricsDevice(&pMetricsDevice);
209-
if (res != CC_OK)
205+
}
206+
if (!devicesOnly)
207+
{
208+
for (uint32_t a = 0; a < pAdapterGroupParams->AdapterCount; a++)
210209
{
211-
fprintf(stderr, "OpenMetricsDevice failed, res: %d, skipping adapter.\n", res);
212-
continue;
213-
}
210+
IAdapterLatest* pAdapter = pAdapterGroup->GetAdapter(a);
211+
if (NULL == pAdapter)
212+
{
213+
fprintf(stderr, "AdapterGroup->GetAdapter() returned NULL, skipping adapter.\n");
214+
continue;
215+
}
214216

215-
printMetricsForDevice(pMetricsDevice);
217+
const TAdapterParamsLatest* pAdapterParams = pAdapter->GetParams();
218+
if (NULL == pAdapterParams)
219+
{
220+
fprintf(stderr, "Adapter->GetParams() returned NULL, skipping adapter.\n");
221+
continue;
222+
}
216223

217-
res = pAdapter->CloseMetricsDevice(pMetricsDevice);
218-
if (res != CC_OK)
219-
{
220-
fprintf(stderr, "CloseMetricsDevice failed, res: %d\n", res);
224+
fprintf(stderr, "\nAdapter %u: %s (%s)\n",
225+
a,
226+
pAdapterParams->ShortName,
227+
adapterTypeToString(pAdapterParams->Type));
228+
fprintf(stderr, "\tPCI Vendor Id: %04X, Device Id: %04X, Bus Info: %02X:%02X.%02X\n",
229+
pAdapterParams->VendorId,
230+
pAdapterParams->DeviceId,
231+
pAdapterParams->BusNumber,
232+
pAdapterParams->DeviceNumber,
233+
pAdapterParams->FunctionNumber);
234+
fprintf(stderr, "########################################\n\n");
235+
236+
IMetricsDeviceLatest* pMetricsDevice = NULL;
237+
res = pAdapter->OpenMetricsDevice(&pMetricsDevice);
238+
if (res != CC_OK)
239+
{
240+
fprintf(stderr, "OpenMetricsDevice failed, res: %d, skipping adapter.\n", res);
241+
continue;
242+
}
243+
244+
printMetricsForDevice(pMetricsDevice);
245+
246+
res = pAdapter->CloseMetricsDevice(pMetricsDevice);
247+
if (res != CC_OK)
248+
{
249+
fprintf(stderr, "CloseMetricsDevice failed, res: %d\n", res);
250+
}
221251
}
222252
}
223253
}
@@ -294,7 +324,7 @@ static bool printMetricsForLegacyDevice(void* pLibrary)
294324
return true;
295325
}
296326

297-
static bool printMetricsHelper()
327+
static bool printMetricsHelper(bool devicesOnly)
298328
{
299329
void* pLibrary = OpenLibrary();
300330
if (pLibrary == NULL)
@@ -303,117 +333,23 @@ static bool printMetricsHelper()
303333
return false;
304334
}
305335

306-
bool success = printMetricsForAdapterGroup(pLibrary);
307-
if (!success)
336+
bool success = printMetricsForAdapterGroup(pLibrary, devicesOnly);
337+
if (!success && !devicesOnly)
308338
{
309339
success = printMetricsForLegacyDevice(pLibrary);
310340
}
311341

312342
return success;
313343
}
314344

315-
static bool printMetricDevicesForAdapterGroup(void* pLibrary)
316-
{
317-
TCompletionCode res = CC_OK;
318-
319-
OpenAdapterGroup_fn OpenAdapterGroup;
320-
OpenAdapterGroup = (OpenAdapterGroup_fn)GetFunctionAddress(pLibrary, "OpenAdapterGroup");
321-
if (OpenAdapterGroup == NULL)
322-
{
323-
fprintf(stderr, "Couldn't get pointer to OpenAdapterGroup!\n");
324-
return false;
325-
}
326-
327-
IAdapterGroupLatest* pAdapterGroup = NULL;
328-
res = OpenAdapterGroup(&pAdapterGroup);
329-
if (res != CC_OK)
330-
{
331-
fprintf(stderr, "OpenAdapterGroup failed, res: %d\n", res);
332-
return false;
333-
}
334-
335-
const TAdapterGroupParamsLatest* pAdapterGroupParams = pAdapterGroup->GetParams();
336-
if (NULL == pAdapterGroupParams)
337-
{
338-
fprintf(stderr, "AdapterGroup->GetParams() returned NULL\n");
339-
return false;
340-
}
341-
342-
fprintf(stderr, "MDAPI Headers: v%d.%d.%d, MDAPI Lib: v%d.%d.%d\n",
343-
MD_API_MAJOR_NUMBER_CURRENT,
344-
MD_API_MINOR_NUMBER_CURRENT,
345-
MD_API_BUILD_NUMBER_CURRENT,
346-
pAdapterGroupParams->Version.MajorNumber,
347-
pAdapterGroupParams->Version.MinorNumber,
348-
pAdapterGroupParams->Version.BuildNumber);
349-
if (pAdapterGroupParams->Version.MajorNumber < 1 ||
350-
(pAdapterGroupParams->Version.MajorNumber == 1 && pAdapterGroupParams->Version.MinorNumber < 1))
351-
{
352-
fprintf(stderr, "MDAPI Lib version must be at least v1.1!\n");
353-
}
354-
else
355-
{
356-
fprintf(stderr, "Found %u MDAPI Adapter%s.\n\n",
357-
pAdapterGroupParams->AdapterCount,
358-
pAdapterGroupParams->AdapterCount > 1 ? "s" : "");
359-
for (uint32_t a = 0; a < pAdapterGroupParams->AdapterCount; a++)
360-
{
361-
IAdapterLatest* pAdapter = pAdapterGroup->GetAdapter(a);
362-
if (NULL == pAdapter)
363-
{
364-
fprintf(stderr, "AdapterGroup->GetAdapter() returned NULL, skipping adapter.\n");
365-
continue;
366-
}
367-
368-
const TAdapterParamsLatest* pAdapterParams = pAdapter->GetParams();
369-
if (NULL == pAdapterParams)
370-
{
371-
fprintf(stderr, "Adapter->GetParams() returned NULL, skipping adapter.\n");
372-
continue;
373-
}
374-
375-
fprintf(stderr, "\nAdapter %u: %s (%s)\n",
376-
a,
377-
pAdapterParams->ShortName,
378-
adapterTypeToString(pAdapterParams->Type));
379-
fprintf(stderr, "\tPCI Vendor Id: %04X, Device Id: %04X, Bus Info: %02X:%02X.%02X\n",
380-
pAdapterParams->VendorId,
381-
pAdapterParams->DeviceId,
382-
pAdapterParams->BusNumber,
383-
pAdapterParams->DeviceNumber,
384-
pAdapterParams->FunctionNumber);
385-
}
386-
}
387-
388-
res = pAdapterGroup->Close();
389-
if (res != CC_OK)
390-
{
391-
fprintf(stderr, "AdapterGroup->Close() failed, res: %d\n", res);
392-
}
393-
394-
return true;
395-
}
396-
397-
static bool printMetricDevicesHelper()
398-
{
399-
void* pLibrary = OpenLibrary();
400-
if (pLibrary == NULL)
401-
{
402-
fprintf(stderr, "Couldn't load metrics discovery library!\n");
403-
return false;
404-
}
405-
406-
return printMetricDevicesForAdapterGroup(pLibrary);
407-
}
408-
409345
};
410346

411347
static void printMetrics()
412348
{
413-
MetricsDiscovery::printMetricsHelper();
349+
MetricsDiscovery::printMetricsHelper(false);
414350
}
415351

416352
static void printMetricDevices()
417353
{
418-
MetricsDiscovery::printMetricDevicesHelper();
354+
MetricsDiscovery::printMetricsHelper(true);
419355
}

0 commit comments

Comments
 (0)