Чтобы сократить время передачи от хоста к устройству для моего приложения, я хочу использовать закрепленную память. рекомендации NVIDIA предлагает сопоставление буферов и запись данных используя следующий код:
cDataIn = (unsigned char*)clEnqueueMapBuffer(cqCommandQue, cmPinnedBufIn, CL_TRUE,CL_MAP_WRITE, 0, memSize, 0, NULL, NULL, NULL);
for(unsigned int i = 0; i < memSize; i++)
{
cDataIn[i] = (unsigned char)(i & 0xff);
}
clEnqueueWriteBuffer(cqCommandQue, cmDevBufIn, CL_FALSE, 0,
szBuffBytes, cDataIn, 0, NULL, NULL);
руководство Intel по оптимизации рекомендует использовать вызовы clEnqueueMapBuffer и clEnqueueUnmapBuffer вместо вызовов clEnqueueReadBuffer или clEnqueueWriteBuffer.
Как правильно использовать закрепленную/сопоставленную память? Нужно ли записывать данные с помощью enqueueWriteBuffer или достаточно enqueueMapBuffer?
Кроме того, в чем разница между CL_MEM_ALLOC_HOST_PTR и CL_MEM_USE_HOST_PTR?