2010-04-23 6 views
11

Ich habe eine Frage zum exklusiven Rechenmodus mit NVidia + OpenCL.Exklusiver Rechenmodus mit OpenCL + NVidia

Ich kann mit nvidia-smi auf einem nvidia-gpu exklusiven Rechenmodus (Seite 74 von cuda Programmieranleitung 3.0) einrichten. Das bedeutet, dass nur ein Programm auf GPU berechnet werden kann.

Cuda Laufzeitpläne als App automatisch.

aber ich habe ein Problem mit OpenCL-Programmen in diesem Fall: wenn eine Anwendung läuft auf einem gpu mit gefasstem exklusivem Rechenmodus und zweiten OpenCL-Programm ruft clGetDeviceInfo (..., CL_DEVICE_AVAILABLE, ...) mit der Die gleiche GPU ist das Ergebnis == CL_TRUE. Wenn opencl-app versucht, auf diesem Gerät einen Kontext zu erstellen, stürzt er dann die laufende App (beides) ab.

Wie kann ich eine verfügbare GPU mit OpenCL herausfinden?

Danke.

+0

Dies ist möglicherweise ein Fehler in der OpenCL-Implementierung. Versuchen Sie, sich mit nVidia in Verbindung zu setzen oder die Frage in den nVidia-Foren zu veröffentlichen, wo ein nVidia-Entwickler sie vielleicht abholen könnte. – shoosh

Antwort

1

clGetDeviceIds gibt die Anzahl der Geräte und deren Geräte-IDs zurück. Dann können Sie prüfen, ob jedes Gerät verfügbar ist oder nicht. Ich bin mir nicht sicher, ob es den Absturz beheben würde.

0

Ich hatte ein ähnliches Problem, wo ich das beste OpenCL-Gerät in einer Liste finden wollte. Ich konnte keine Lösung finden, also habe ich selbst eine geschrieben. Es wird versucht, einen Kontext auf einem Gerät zu erstellen. Wenn es nicht möglich ist, wird es das nächste versuchen.

Es unterstützt auch mehrere OpenCL-Plattformen. Sie können zwischen NVIDIA (nur GPU), AMD (GPU & CPU), Intel (CPU) und Apple (GPU & CPU) wählen.

Sie können es auf Github finden: https://github.com/nbigaouette/oclutils/

Ich bin immer noch, obwohl für einen besseren Verriegelungsmechanismus suchen.