clBuildProgram failed with error code -11 und ohne build-log
Ich gearbeitet habe, etwas in OpenCL jetzt aber vor kurzem "clBuildProgram" Fehler in meinem Programm. Mein code-Auszug ist unten:
cl_program program;
program = clCreateProgramWithSource(context, 1, (const char**) &kernel_string, NULL, &err);
if(err != CL_SUCCESS)
{
cout<<"Unable to create Program Object. Error code = "<<err<<endl;
exit(1);
}
if(clBuildProgram(program, 0, NULL, NULL, NULL, NULL) != CL_SUCCESS)
{
cout<<"Program Build failed\n";
size_t length;
char buffer[2048];
clGetProgramBuildInfo(program, device_id[0], CL_PROGRAM_BUILD_LOG, sizeof(buffer), buffer, &length);
cout<<"--- Build log ---\n "<<buffer<<endl;
exit(1);
}
Normalerweise früher bekam ich einen syntax-oder andere Fehler in der kernel-Datei hier mit Hilfe von "clGetProgramBuildInfo ()" - Funktion wenn "clBuildProgram" Versagt aber, wenn das Programm ausgeführt wird, auf Konsole gibt es nur Drucke:
Programm Build failed
- - - "Build log" - - -
Und als ich versuchte zu drucken die Fehlermeldung von "clBuildProgram"; es ist "-11"......
Was kann das problem mit meinem kernel-Datei, die ich nicht jedem build fehl-Informationen ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie lernen, die Bedeutung der OpenCL Fehler-codes durch die Suche in cl.h. In diesem Fall, -11 ist genau das, was Sie erwarten würde, CL_BUILD_PROGRAM_FAILURE. Es ist sicherlich merkwürdig, dass der build-log ist leer. Zwei Fragen:
1.) Was ist der return-Wert von clGetProgramBuildInfo?
2.) Auf welcher Plattform sind Sie auf? Wenn Sie mit Apple OpenCL-Implementierung, die Sie könnten versuchen, Einstellung CL_LOG_ERRORS=stdout in Ihrer Umgebung. Zum Beispiel vom Terminal:
$ CL_LOG_ERRORS=stdout ./myprog
Es ist auch ziemlich einfach, legen Sie diese in Xcode (Schema Bearbeiten -> Argumente -> Umgebungsvariablen).
Wenn Sie mit C anstelle von C++:
Ich hatte das gleiche problem mit einer leeren log-Datei. Ich war, meine Prüfung ocl-kernel auf einem anderen computer. Hatte es 2 Plattformen statt eine. Eine Intel-GPU und eine AMD-GPU. Ich hatte nur AMD OCL-SDK installiert. Die Installation von dem Intel-OCL-SDK das problem behoben. Auch die Auswahl der AMD-Plattform statt der Intel GPU Plattform fixiert.