/*! \internal \brief
* Returns the GPU information text, one GPU per line.
*/
-static std::string sprint_gpus(const gmx_gpu_info_t& gpu_info)
+static std::string sprint_gpus(const std::vector<std::unique_ptr<DeviceInformation>>& deviceInfoList)
{
- char stmp[STRLEN];
- std::vector<std::string> gpuStrings;
- for (int i = 0; i < gpu_info.n_dev; i++)
+ std::vector<std::string> gpuStrings(0);
+ for (const auto& deviceInfo : deviceInfoList)
{
- get_gpu_device_info_string(stmp, gpu_info, i);
- gpuStrings.push_back(gmx::formatString(" %s", stmp));
+ gpuStrings.emplace_back(" " + getDeviceInformationString(*deviceInfo));
}
return gmx::joinStrings(gpuStrings, "\n");
}
s += gmx::formatString(" %d cores,", hwinfo->ncore_tot);
}
s += gmx::formatString(" %d logical cores", hwinfo->nhwthread_tot);
- if (hwinfo->gpu_info.bDetectGPUs)
+ if (canPerformDeviceDetection(nullptr))
{
s += gmx::formatString(", %d compatible GPU%s", hwinfo->ngpu_compatible_tot,
hwinfo->ngpu_compatible_tot == 1 ? "" : "s");
}
}
- if (bGPUBinary && hwinfo->gpu_info.n_dev > 0)
+ if (bGPUBinary && !hwinfo->deviceInfoList.empty())
{
s += gmx::formatString(" GPU info:\n");
- s += gmx::formatString(" Number of GPUs detected: %d\n", hwinfo->gpu_info.n_dev);
- s += sprint_gpus(hwinfo->gpu_info) + "\n";
+ s += gmx::formatString(" Number of GPUs detected: %d\n",
+ static_cast<int>(hwinfo->deviceInfoList.size()));
+ s += sprint_gpus(hwinfo->deviceInfoList) + "\n";
}
return s;
}