[OpenCL] ошибка между clEnqueueMapImage и clEnqueueUnmapMemO
От: _Cyber_ Россия  
Дата: 20.06.18 08:58
Оценка:
Помогите, пытаюсь улучшить скорость передачи данных в библиотеке https://github.com/amcelroy/OpenCLV заменой read/write на map/unmap.
Но постоянно возникает ошибка между clEnqueueMapImage и clEnqueueUnmapMemObject. Даже если вместо memcpy использую простой цикл с присваиванием. Даже если просто один байт копирую или присваиваю.
Кусок кода, где возникает ошибка:
size_t HostOrigin[3] = {0,0,0};
size_t Region[3] = {sizeof(unsigned int)*HostWidth, HostHeight, HostDepth};

void* map_ptr = clEnqueueMapImage(d->GetQueue(), DeviceMem, CL_TRUE, CL_MAP_WRITE, HostOrigin, Region, &HostRowPitch, &HostSlicePitch, 0, NULL, NULL, NULL);

memcpy(map_ptr, Data, HostWidth * HostHeight * sizeof(unsigned int));           ///ERROR ????????????

*Error = clEnqueueUnmapMemObject(d->GetQueue(), DeviceMem, map_ptr, 0, NULL, NULL);

Создание буфера:
cl_mem temp = clCreateBuffer(d->GetContext(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, Size, NULL, Error);

HostSlicePitch после clEnqueueMapImage != 0

Что я делаю не так?
Отредактировано 20.06.2018 9:04 _Cyber_ . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.