检测AleaGpu上的GPU是否可用

问题描述 投票:1回答:2

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

Gpu.Default会无效吗?这个对象上有属性可以检查吗?

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

c# .net aleagpu
2个回答
1
投票

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


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();
}
© www.soinside.com 2019 - 2024. All rights reserved.