Je suis en train d'écrire un petit programme CUDA et j'ai les erreurs suivantes:erreur dans CUDA
contraste.cu(167): error: calling a host function from a __device__/__global__ function is not allowed
Je ne comprends pas pourquoi. Pouvez-vous s'il vous plaît m'aider et me montrer mes erreurs. Il semble que mon programme est correct. Voici un le tas de code provoquant les problèmes:
__global__ void kernel_contraste(float power,
unsigned char tab_in[],
unsigned char tab_out[],
int nbl, int nbc) {
int x = threadIdx.x;
printf("I am the thread %d\n", x);
}
Une partie de mon programme principal:
unsigned char *dimg, *dimg_res;
.....
cudaMalloc((void **)dimg, h * w * sizeof(char));
cudaMemcpy(dimg, r.data, h*w*sizeof(char), cudaMemcpyHostToDevice);
cudaMalloc((void **)dimg_res, h*w*sizeof(char));
dim3 nbThreadparBloc(256);
dim3 numblocs(1);
kernel_contraste<<<numblocs, nbThreadparBloc >>>(puissance, dimg, dimg_res, h, w);
cudaThreadSynchronize();
.....
cudaFree(dimg);
cudaFree(dimg_res);
La ligne 167 est la ligne où j'appelle la fonction printf en kernel_contraste. Pour information, ce programme prend une image en entrée (un fichier Raster soleil) et une puissance puis il calcule le contraste de cette image.
Merci!