如何下载cl_mem的元素?

时间:2014-04-11 05:24:33

标签: buffer opencl

例如,我应用了一个长度为7 * sizeof(cl_int)的cl_mem

     cl_mem cl_test= clCreateBuffer
    (context,CL_MEM_READ_WRITE,7*sizeof(cl_int),NULL,NULL );

在设备中进行一些处理后,我只想下载第三个元素而不是整个cl_mem。

我该怎么办?

使用

clEnqueueReadBuffer(queue,cl_test[2],CL_TRUE,0,sizeof(cl_int),(void*)data_int_host,0,NULL,NULL );

或者

clEnqueueReadBuffer(queue,cl_test+2,CL_TRUE,0,sizeof(cl_int),(void*)data_int_host,0,NULL,NULL );

??? 我不知道......

谢谢!

1 个答案:

答案 0 :(得分:4)

offset参数用于clEnqueueReadBuffer()功能。

例如,要读取缓冲区的第三个元素(假设您的缓冲区包含cl_int' s):

clEnqueueReadBuffer(queue, cl_test, CL_TRUE, 3 * sizeof(cl_int), sizeof(cl_int), (void*) data_int_host, 0, NULL, NULL);