clBuildProgram a échoué avec le code d'erreur -11 et sans journal de l'
J'ai travaillé peu en OpenCL maintenant, mais récemment "clBuildProgram" échec dans l'un de mes programme. Mon extrait de code ci-dessous:
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);
}
Normalement plus tôt, j'ai eu de la syntaxe ou d'autres erreurs à l'intérieur du noyau de fichiers, ici, avec l'aide de "clGetProgramBuildInfo()" chaque fois que "clBuildProgram" a Échoué, mais lorsque ce programme s'exécute, sur console il n'imprime que:
Programme Build failed
--- Journal de l' ---
Et quand j'ai essayé d'imprimer le code d'erreur renvoyé par "clBuildProgram"; il est "-11"......
Quel peut être le problème avec mon fichier kernel que je n'obtiens pas tout construire l'échec de l'information ?
OriginalL'auteur Akhtar Ali | 2011-10-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez apprendre le sens de l'OpenCL codes d'erreur en cherchant dans les cl.h. Dans ce cas, -11 est tout ce que vous attendez, CL_BUILD_PROGRAM_FAILURE. Il est certainement curieux que le journal est vide. Deux questions:
1.) Quelle est la valeur de retour de clGetProgramBuildInfo?
2.) Quelle plate-forme êtes-vous? Si vous utilisez Apple OpenCL mise en œuvre, vous pouvez essayer le réglage de CL_LOG_ERRORS=stdout dans votre environnement. Par exemple, dans le Terminal:
$ CL_LOG_ERRORS=stdout ./myprog
C'est aussi très facile à mettre cela dans Xcode (Modifier le Système -> les Arguments -> Variables d'Environnement).
OriginalL'auteur James
Si vous utilisez la C au lieu de C++:
OriginalL'auteur Rein
J'ai rencontré le même problème avec un fichier journal vide. J'ai été le tester mes ocl noyau sur un autre ordinateur. Il avait 2 plates-formes au lieu d'un. Un GPU Intel et un AMD GPU. Je n'avais AMD OCL SDK installé. L'installation de l'Intel OCL SDK résolu le problème. Aussi la sélection de la plateforme AMD au lieu de l'Intel GPU plate-forme fixe.
OriginalL'auteur Jonas V