2016-04-04 10 views
1

Die normale Art, ein OpenCL-Programm auszuführen, besteht darin, den openCL-Kernel einzuschließen, der zur Laufzeit kompiliert wird (Online-Kompilierung).Gibt es einen offlineOpenCL-Compiler (für NVIDIA-Grafikkarten)?

Aber ich habe Beispiele zum Kompilieren von OpenCL zu binären zuvor gesehen, Offline-Kompilierung genannt. Ich kenne die Nachteile (Reduzierung der Kompatibilität über die Hardware hinweg).

Früher war ein Offline-Compiler bei http://www.fixstars.com/en/, aber es scheint nicht mehr verfügbar zu sein.

Gibt es also einen Offline-Compiler für OpenCL, insbesondere für NVIDIA-basierte Karten?

+0

clGetProgramInfo und CL_PROGRAM_BINARIES und Karten? –

+0

Also meinen Sie, dass Sie eine Standard-OpenCl-Funktion verwenden können, um zu binär zu kompilieren und später diese Binärdatei zu verwenden, um Ihr kompiliertes OpenCL-Programm auszuführen? – Roalt

+0

Vielleicht nur ähnliche Plattformen. –

Antwort

0

Jemand schlug vor, dass nvcc.exe in NVidia CUDA SDK .cl Dateien mit

nvcc -x cu file.cl -o file.out -lOpenCL 

kompilieren konnte ... aber es cl.exe zumindest unter Windows sagt fehlt. Dies könnte lohnt sich jedoch: http://clcc.sourceforge.net/

Neben:

+1

Missing cl.exe würde bedeuten, dass es von Microsoft C/C++ - Compiler, der mit Visual Studio gebündelt ist, abhängt. Wird dies als Voraussetzung für das CUDA SDK von NVIDIA aufgeführt? –

+0

@CodyGray Das nvcc benötigt normalerweise einen C-Compiler im Hintergrund (d. H. Es verwendet den C-Compiler für den C-Teil und macht seine eigene Magie für den CUDA- oder OpenCL-Teil). Im Allgemeinen könnte @Roalt: Eine Problemumgehung wäre, eine kleine, eigenständige Anwendung zu schreiben, die im Grunde genommen ein Wrapper um die jeweiligen 'clCompileProgram'-Aufrufe ist, so dass Sie einen kleinen Befehlszeilen-Compiler erhalten, der eine Menge davon erhält CL-Eingabedateien, kompiliert sie und schreibt das Ergebnis (das dann mit 'CL_PROGRAM_BINARIES' erhalten wird) in Ausgabedateien. Ich bin überrascht, wenn es so etwas noch nicht gibt ... – Marco13