是否可以在使用 AleaGPU 运行 GPU 代码之前检测是否存在 GPU?
会Gpu.Default
为空吗?该对象是否有可以检查的属性?
如果存在 GPU,我基本上想运行更快的算法版本,否则我想运行原始的慢速版本。
我禁用了我的 GPU,然后尝试了这一行:
Console.WriteLine(Alea.Device.Devices.Count().ToString());
我得到了这个异常System.Exception was unhandled Message=[CUDAError] CUDA_ERROR_UNKNOWN
,如果你试图访问,你也会得到同样的异常Gpu.Default
。所以你可以做这样的事情:
bool GpuEnabled = false;
try
{
GpuEnabled = Alea.Device.Devices.Count() > 0;
}
catch
{
GpuEnabled = false;
}
Console.WriteLine(GpuEnabled.ToString());
注意:我不确定 Alea 是否抛出异常,因为我有一个 GPU,但它被禁用,或者它在根本没有 GPU 的机器上的行为方式相同,无论如何,这段代码应该处理这两个假设安全。
这可能是最简单的方法:(它使您独立于 API)
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DisplayConfiguration");
var q = searcher.Get()
.SelectMany(x => x.Properties)
.Where(x => x.Name == "Description")
foreach (var item in q)
{
yield return item.Value.ToString();
}