diff --git a/third_party/intel/backend/proton_utils.cpp b/third_party/intel/backend/proton_utils.cpp index a8bc31944c..154dc9e2df 100644 --- a/third_party/intel/backend/proton_utils.cpp +++ b/third_party/intel/backend/proton_utils.cpp @@ -9,9 +9,10 @@ extern "C" void waitOnSyclQueue(void *syclQueue) { // FIXME: Should it be in DeviceInfo class? // Inspired by Kineto: `XpuptiActivityProfiler.cpp` -extern "C" void -enumDeviceUUIDs(std::vector> deviceUUIDs_) { - if (!deviceUUIDs_.empty()) { +extern "C" void enumDeviceUUIDs(void *deviceUUIDsPtr) { + auto *deviceUUIDs_ = + reinterpret_cast> *>(deviceUUIDsPtr); + if (!deviceUUIDs_->empty()) { return; } auto platform_list = sycl::platform::get_platforms(); @@ -24,13 +25,13 @@ enumDeviceUUIDs(std::vector> deviceUUIDs_) { for (const auto &device : device_list) { if (device.is_gpu()) { if (device.has(sycl::aspect::ext_intel_device_info_uuid)) { - deviceUUIDs_.push_back( + deviceUUIDs_->push_back( device.get_info()); } else { std::cerr << "Warnings: UUID is not supported for this XPU device. " "The device index of records will be 0." << std::endl; - deviceUUIDs_.push_back(std::array{}); + deviceUUIDs_->push_back(std::array{}); } } } diff --git a/third_party/proton/csrc/lib/Profiler/Xpupti/XpuptiProfiler.cpp b/third_party/proton/csrc/lib/Profiler/Xpupti/XpuptiProfiler.cpp index 07e9367dd6..da93531a55 100644 --- a/third_party/proton/csrc/lib/Profiler/Xpupti/XpuptiProfiler.cpp +++ b/third_party/proton/csrc/lib/Profiler/Xpupti/XpuptiProfiler.cpp @@ -275,7 +275,7 @@ void CallbackCommon(pti_callback_domain domain, std::cout << std::endl; } -typedef void (*EnumDeviceUUIDsFunc)(std::vector>); +typedef void (*EnumDeviceUUIDsFunc)(void *); int callEnumDeviceUUIDs(const std::string &utils_cache_path) { void *handle = dlopen(xpu::PROTON_UTILS.data(), RTLD_LAZY); @@ -294,7 +294,7 @@ int callEnumDeviceUUIDs(const std::string &utils_cache_path) { return 1; } - enumDeviceUUIDs(deviceUUIDs_); + enumDeviceUUIDs(&deviceUUIDs_); dlclose(handle); return 0;