1

是否可以在使用 AleaGPU 运行 GPU 代码之前检测是否存在 GPU?

Gpu.Default为空吗?该对象是否有可以检查的属性?

如果存在 GPU,我基本上想运行更快的算法版本,否则我想运行原始的慢速版本。

4

2 回答 2

2

我禁用了我的 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 的机器上的行为方式相同,无论如何,这段代码应该处理这两个假设安全。

于 2017-12-24T22:01:18.943 回答
0

这可能是最简单的方法:(它使您独立于 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();
}
于 2017-11-28T14:36:19.143 回答