8
8
namespace cortex ::hw {
9
9
10
10
inline std::vector<GPU> GetGPUInfo () {
11
- std::vector<GPU> res;
12
- // Only support for nvidia for now
13
- // auto gpus = hwinfo::getAllGPUs();
14
11
auto nvidia_gpus = system_info_utils::GetGpuInfoList ();
15
12
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 ();
17
14
15
+ // In case we have vulkan info, add more information for GPUs
18
16
for (size_t i = 0 ; i < nvidia_gpus.size (); i++) {
19
17
for (size_t j = 0 ; j < vulkan_gpus.size (); j++) {
20
18
if (nvidia_gpus[i].uuid .find (vulkan_gpus[j].uuid ) != std::string::npos) {
19
+ use_vulkan_info = true ;
21
20
vulkan_gpus[j].version =
22
21
nvidia_gpus[0 ].cuda_driver_version .value_or (" unknown" );
23
22
vulkan_gpus[j].add_info = NvidiaAddInfo{
@@ -28,6 +27,25 @@ inline std::vector<GPU> GetGPUInfo() {
28
27
}
29
28
}
30
29
}
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
+ }
32
50
}
33
51
} // namespace cortex::hw
0 commit comments