Я пишу небольшую программу на CUDA, и у меня возникают следующие ошибки:
contraste.cu(167): error: calling a host function from a __device__/__global__ function is not allowed
Я не понимаю, почему.Можете ли вы помочь мне и показать мои ошибки.Кажется, моя программа верна.Вот код, вызывающий проблемы:
__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);
}
Часть моей основной программы:
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);
Строка 167 - это строка, где я вызываю printf в функции kernel_contraste.
Для информации, эта программа принимает изображение в качестве входного (растровый файл солнца) и мощность, а затем вычисляет контраст этого изображения.
Спасибо !!