Skip to content

Commit 32af9df

Browse files
fix: correct gpu info list (#1944)
* fix: correct gpu info list * chore: cleanup --------- Co-authored-by: vansangpfiev <[email protected]>
1 parent 4132f2f commit 32af9df

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

engine/utils/hardware/gpu/vulkan/vulkan_gpu.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -300,22 +300,22 @@ inline cpp::result<std::vector<cortex::hw::GPU>, std::string> GetGpuInfoList() {
300300

301301
uint32_t extension_count = 0;
302302
vkEnumerateInstanceExtensionProperties(nullptr, &extension_count, nullptr);
303-
std::vector<VkExtensionProperties> availableExtensions(extension_count);
303+
std::vector<VkExtensionProperties> available_extensions(extension_count);
304304
vkEnumerateInstanceExtensionProperties(nullptr, &extension_count,
305-
availableExtensions.data());
305+
available_extensions.data());
306306

307307
// Create a Vulkan instance
308308
VkInstanceCreateInfo instance_create_info = {};
309309
instance_create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
310310
// If the extension is available, enable it
311311
std::vector<const char*> enabled_extensions;
312312

313-
for (const auto& extension : availableExtensions) {
313+
for (const auto& extension : available_extensions) {
314314
enabled_extensions.push_back(extension.extensionName);
315315
}
316316

317317
instance_create_info.enabledExtensionCount =
318-
static_cast<uint32_t>(availableExtensions.size());
318+
static_cast<uint32_t>(available_extensions.size());
319319
instance_create_info.ppEnabledExtensionNames = enabled_extensions.data();
320320

321321
VkInstance instance;

engine/utils/hardware/gpu_info.h

+23-5
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@
88
namespace cortex::hw {
99

1010
inline std::vector<GPU> GetGPUInfo() {
11-
std::vector<GPU> res;
12-
// Only support for nvidia for now
13-
// auto gpus = hwinfo::getAllGPUs();
1411
auto nvidia_gpus = system_info_utils::GetGpuInfoList();
1512
auto vulkan_gpus = GetGpuInfoList().value_or(std::vector<cortex::hw::GPU>{});
16-
// add more information for GPUs
13+
auto use_vulkan_info = nvidia_gpus.empty();
1714

15+
// In case we have vulkan info, add more information for GPUs
1816
for (size_t i = 0; i < nvidia_gpus.size(); i++) {
1917
for (size_t j = 0; j < vulkan_gpus.size(); j++) {
2018
if (nvidia_gpus[i].uuid.find(vulkan_gpus[j].uuid) != std::string::npos) {
19+
use_vulkan_info = true;
2120
vulkan_gpus[j].version =
2221
nvidia_gpus[0].cuda_driver_version.value_or("unknown");
2322
vulkan_gpus[j].add_info = NvidiaAddInfo{
@@ -28,6 +27,25 @@ inline std::vector<GPU> GetGPUInfo() {
2827
}
2928
}
3029
}
31-
return vulkan_gpus;
30+
31+
if (use_vulkan_info) {
32+
return vulkan_gpus;
33+
} else {
34+
std::vector<GPU> res;
35+
for (auto& n : nvidia_gpus) {
36+
res.emplace_back(
37+
GPU{.id = n.id,
38+
.name = n.name,
39+
.version = nvidia_gpus[0].cuda_driver_version.value_or("unknown"),
40+
.add_info =
41+
NvidiaAddInfo{
42+
.driver_version = n.driver_version.value_or("unknown"),
43+
.compute_cap = n.compute_cap.value_or("unknown")},
44+
.free_vram = std::stoi(n.vram_free),
45+
.total_vram = std::stoi(n.vram_total),
46+
.uuid = n.uuid});
47+
}
48+
return res;
49+
}
3250
}
3351
} // namespace cortex::hw

0 commit comments

Comments
 (0)