clGetProgramBuildInfo n’imprime pas le journal de génération

J’ai écrit un code dans OpenCL. Il y a une erreur lors de la construction du programme du kernel. Le code d’erreur est -11. J’ai essayé d’imprimer le BUILD LOG mais il n’imprime pas un journal approprié mais génère des variables aléatoires. Voici cette partie

//these are variable declarations cl_device_id* devices; cl_program kernelprgrm; size_t size; //these varaibles have already been assigned properly //main code clGetProgramBuildInfo(kernelprgrm,devices[i], CL_PROGRAM_BUILD_LOG ,0,NULL,&size); char *buildlog=(char*)malloc(size); clGetProgramBuildInfo(kernelprgrm,devices[i], CL_PROGRAM_BUILD_LOG ,size,buildlog,NULL); printf("\n\nBuildlog: %s\n\n",buildlog); 

Il donne la sortie suivante: –

 Buildlog:    0 

S’il vous plaît aidez-moi à obtenir un bon journal de construction. Merci

J’ai testé ce code sur ma machine et cela fonctionne bien:

 size_t len = 0; cl_int ret = CL_SUCCESS; ret = clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, 0, NULL, &len); char *buffer = calloc(len, sizeof(char)); ret = clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, len, buffer, NULL); 

Dès que cela ressemble assez à votre code, il y a 2 différences, ce qui peut produire une erreur:

  • Vérifier les codes de retour
  • Vérifiez l’index du périphérique dans le tableau. Peut-être que vous voulez obtenir le journal du mauvais périphérique.