2017-11-27 3 views
1

Ist es möglich, vor dem Ausführen von GPU-Code mit AleaGPU festzustellen, ob eine GPU vorhanden ist?Erkennen, ob GPU auf AleaGpu verfügbar ist

Wird Gpu.Default null sein? Gibt es eine Eigenschaft für dieses Objekt, die überprüft werden kann?

Ich möchte grundsätzlich eine schnellere Version eines Algorithmus ausführen, wenn die GPU vorhanden ist, andernfalls möchte ich die ursprüngliche langsame Version ausführen.

Antwort

1

Ich habe deaktiviert meine GPU dann diese Zeile versucht:

Console.WriteLine(Alea.Device.Devices.Count().ToString()); 

Und ich habe diese Ausnahme System.Exception was unhandled Message=[CUDAError] CUDA_ERROR_UNKNOWN und Sie erhalten dieselbe Ausnahme, wenn Sie versuchen, auf Gpu.Default zuzugreifen. So können Sie etwas tun:

bool GpuEnabled = false; 
try 
{ 
    GpuEnabled = Alea.Device.Devices.Count() > 0; 
} 
catch 
{ 
    GpuEnabled = false; 
} 
Console.WriteLine(GpuEnabled.ToString()); 

Hinweis: Ich bin nicht sicher, ob Alea eine Ausnahme geworfen, weil ich eine GPU habe, aber es war deaktiviert, oder es wird die gleiche Art und Weise mit einer Maschine verhalten, die ‚doesn t haben überhaupt eine GPU, dieser Code sollte beide Annahmen sicher handhaben.

0

Dies ist wahrscheinlich der einfachste Weg: (Es macht Sie API unabhängig)

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(); 
} 
Verwandte Themen