Моей программы, я поставилOpenCL ошибка о get_global_id
size_t global_item_size = 12000;
size_t local_item_size = 600;
cl_mem arr_M_obj = clCreateBuffer(context, CL_MEM_READ_WRITE, 12000 * sizeof(int), NULL, &ret);
ret = clEnqueueNDRangeKernel(command_queue, kernel, 1, NULL, &global_item_size, &local_item_size, 0, NULL, NULL);
и мое ядро:
__kernel void mykernel(__global int* arrM)
{
int n = get_global_id(0);
arrM[n] = n;
}
Но мой результат имеет ошибку, я использую цикл и печать arrM
после копирования с устройства хозяин и мой результат
arrM[0] = 0
arrM[1] = 0
arrM[2] = 1
arrM[3] = 0
arrM[4] = 2
arrM[5] = 0
arrM[6] = 3
...
arrM[11998] = 5999
arrM[11999] = 0
Помогите мне решить эту проблему?
В коде не указано ни одного вопроса. Пожалуйста, напишите короткий, но полный пример, который воспроизводит проблему. –
Я установил 20 рабочих_групп, но когда я получу get_group_id (0), максимум равен 9, но get_num_groups (0) = 20. Я не понимаю, какая проблема происходит. – AnNguyen
'local_item_size' (установленный на 600), возможно, больше, чем ваше устройство может ручка. Попробуйте передать NULL вместо этого, и пусть среда выполнения определит размер рабочей группы. – Dithermaster