From 464caf9c15118cb07a9736d0ff9485cf6c1532ec Mon Sep 17 00:00:00 2001 From: vansangpfiev Date: Sat, 8 Feb 2025 14:53:47 +0700 Subject: [PATCH 1/2] fix: correct gpu info list --- engine/utils/hardware/gpu_info.h | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/engine/utils/hardware/gpu_info.h b/engine/utils/hardware/gpu_info.h index 3c7ff8733..43325bf38 100644 --- a/engine/utils/hardware/gpu_info.h +++ b/engine/utils/hardware/gpu_info.h @@ -8,16 +8,15 @@ namespace cortex::hw { inline std::vector GetGPUInfo() { - std::vector res; - // Only support for nvidia for now - // auto gpus = hwinfo::getAllGPUs(); auto nvidia_gpus = system_info_utils::GetGpuInfoList(); auto vulkan_gpus = GetGpuInfoList().value_or(std::vector{}); - // add more information for GPUs + auto use_vulkan_info = nvidia_gpus.empty(); + // In case we have vulkan info, add more information for GPUs for (size_t i = 0; i < nvidia_gpus.size(); i++) { for (size_t j = 0; j < vulkan_gpus.size(); j++) { if (nvidia_gpus[i].uuid.find(vulkan_gpus[j].uuid) != std::string::npos) { + use_vulkan_info = true; vulkan_gpus[j].version = nvidia_gpus[0].cuda_driver_version.value_or("unknown"); vulkan_gpus[j].add_info = NvidiaAddInfo{ @@ -28,6 +27,25 @@ inline std::vector GetGPUInfo() { } } } - return vulkan_gpus; + + if (use_vulkan_info) { + return vulkan_gpus; + } else { + std::vector res; + for (auto& n : nvidia_gpus) { + res.emplace_back( + GPU{.id = n.id, + .name = n.name, + .version = nvidia_gpus[0].cuda_driver_version.value_or("unknown"), + .add_info = + NvidiaAddInfo{ + .driver_version = n.driver_version.value_or("unknown"), + .compute_cap = n.compute_cap.value_or("unknown")}, + .free_vram = std::stoi(n.vram_free), + .total_vram = std::stoi(n.vram_total), + .uuid = n.uuid}); + } + return res; + } } } // namespace cortex::hw \ No newline at end of file From 8e07b143012934c6efb09485b558ed0d8fe1d8ff Mon Sep 17 00:00:00 2001 From: vansangpfiev Date: Mon, 10 Feb 2025 09:10:46 +0700 Subject: [PATCH 2/2] chore: cleanup --- engine/utils/hardware/gpu/vulkan/vulkan_gpu.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/engine/utils/hardware/gpu/vulkan/vulkan_gpu.h b/engine/utils/hardware/gpu/vulkan/vulkan_gpu.h index 70bcac94c..4ef7f51ec 100644 --- a/engine/utils/hardware/gpu/vulkan/vulkan_gpu.h +++ b/engine/utils/hardware/gpu/vulkan/vulkan_gpu.h @@ -300,9 +300,9 @@ inline cpp::result, std::string> GetGpuInfoList() { uint32_t extension_count = 0; vkEnumerateInstanceExtensionProperties(nullptr, &extension_count, nullptr); - std::vector availableExtensions(extension_count); + std::vector available_extensions(extension_count); vkEnumerateInstanceExtensionProperties(nullptr, &extension_count, - availableExtensions.data()); + available_extensions.data()); // Create a Vulkan instance VkInstanceCreateInfo instance_create_info = {}; @@ -310,12 +310,12 @@ inline cpp::result, std::string> GetGpuInfoList() { // If the extension is available, enable it std::vector enabled_extensions; - for (const auto& extension : availableExtensions) { + for (const auto& extension : available_extensions) { enabled_extensions.push_back(extension.extensionName); } instance_create_info.enabledExtensionCount = - static_cast(availableExtensions.size()); + static_cast(available_extensions.size()); instance_create_info.ppEnabledExtensionNames = enabled_extensions.data(); VkInstance instance;