Skip to content

Commit 234576d

Browse files
committed
test(Sysman): Test to validate memory bandwidth counters with workload
Related-To: VLCLJ-2505 Signed-off-by: Aviral Nigam <[email protected]>
1 parent 004b011 commit 234576d

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

conformance_tests/sysman/test_sysman_memory/src/test_sysman_memory.cpp

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,4 +408,82 @@ TEST_F(
408408
memoryThread.join();
409409
}
410410
}
411+
412+
TEST_F(MEMORY_TEST,
413+
GivenWorkloadWhenQueryingMemoryBandwidthCountersThenCountersIncrease) {
414+
for (auto device : devices) {
415+
uint32_t count = 0;
416+
auto mem_handles = lzt::get_mem_handles(device, count);
417+
418+
if (count == 0) {
419+
LOG_WARNING << "No memory handles found on this device!";
420+
continue;
421+
}
422+
423+
#ifdef USE_ZESINIT
424+
auto sysman_device_properties = lzt::get_sysman_device_properties(device);
425+
ze_device_handle_t core_device =
426+
lzt::get_core_device_by_uuid(sysman_device_properties.core.uuid.id);
427+
EXPECT_NE(core_device, nullptr);
428+
ze_device_properties_t deviceProperties = {
429+
ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES, nullptr};
430+
EXPECT_EQ(ZE_RESULT_SUCCESS,
431+
zeDeviceGetProperties(core_device, &deviceProperties));
432+
std::cout << "test device name " << deviceProperties.name << " uuid "
433+
<< lzt::to_string(deviceProperties.uuid);
434+
device = core_device;
435+
#else // USE_ZESINIT
436+
ze_device_properties_t deviceProperties = {
437+
ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES, nullptr};
438+
EXPECT_EQ(ZE_RESULT_SUCCESS,
439+
zeDeviceGetProperties(device, &deviceProperties));
440+
std::cout << "test device name " << deviceProperties.name << " uuid "
441+
<< lzt::to_string(deviceProperties.uuid);
442+
#endif // USE_ZESINIT
443+
444+
// Allocate device memory for workload
445+
const size_t buffer_size = 32 * 1024 * 1024;
446+
ze_device_mem_alloc_desc_t device_desc = {};
447+
device_desc.stype = ZE_STRUCTURE_TYPE_DEVICE_MEM_ALLOC_DESC;
448+
device_desc.ordinal = 0;
449+
device_desc.flags = 0;
450+
451+
void *src_ptr = lzt::allocate_device_memory(buffer_size, 1, 0, device,
452+
lzt::get_default_context());
453+
void *dst_ptr = lzt::allocate_device_memory(buffer_size, 1, 0, device,
454+
lzt::get_default_context());
455+
456+
ASSERT_NE(src_ptr, nullptr);
457+
ASSERT_NE(dst_ptr, nullptr);
458+
459+
for (auto mem_handle : mem_handles) {
460+
ASSERT_NE(nullptr, mem_handle);
461+
462+
// Get initial bandwidth counters
463+
zes_mem_bandwidth_t bandwidth_before = {};
464+
EXPECT_EQ(ZE_RESULT_SUCCESS,
465+
zesMemoryGetBandwidth(mem_handle, &bandwidth_before));
466+
467+
// Run the workload
468+
ze_result_t result = copy_workload(device, &device_desc, src_ptr, dst_ptr,
469+
static_cast<int32_t>(buffer_size));
470+
EXPECT_EQ(result, ZE_RESULT_SUCCESS);
471+
472+
// Get bandwidth counters after workload
473+
zes_mem_bandwidth_t bandwidth_after = {};
474+
EXPECT_EQ(ZE_RESULT_SUCCESS,
475+
zesMemoryGetBandwidth(mem_handle, &bandwidth_after));
476+
477+
// Validate that read/write counters have increased
478+
EXPECT_GE(bandwidth_after.readCounter, bandwidth_before.readCounter)
479+
<< "Read counter did not increase after workload";
480+
EXPECT_GE(bandwidth_after.writeCounter, bandwidth_before.writeCounter)
481+
<< "Write counter did not increase after workload";
482+
}
483+
484+
// Free device memory
485+
lzt::free_memory(src_ptr);
486+
lzt::free_memory(dst_ptr);
487+
}
488+
}
411489
} // namespace

0 commit comments

Comments
 (0)