关于clCreateImage2D的用法

时间:2012-10-29 05:03:43

标签: opencl

通常clCreateImage2D中的第二个参数是一个标志CL_MEM_READ等。但我在其中一个示例代码中发现它为0(P. no:80,使用openCL进行异构计算):

 //Create space for the source image on the device
 cl_mem bufferSourceImage = clCreateImage2D(
 context,0,&format, width,height,0,NULL,NULL);

为什么会这样?

1 个答案:

答案 0 :(得分:2)

cl_mem_flags是位域:

cl.h

/* cl_mem_flags - bitfield */
#define CL_MEM_READ_WRITE                           (1 << 0)
#define CL_MEM_WRITE_ONLY                           (1 << 1)
#define CL_MEM_READ_ONLY                            (1 << 2)
#define CL_MEM_USE_HOST_PTR                         (1 << 3)
#define CL_MEM_ALLOC_HOST_PTR                       (1 << 4)
#define CL_MEM_COPY_HOST_PTR                        (1 << 5)
// reserved                                         (1 << 6)    
#define CL_MEM_HOST_WRITE_ONLY                      (1 << 7)
#define CL_MEM_HOST_READ_ONLY                       (1 << 8)
#define CL_MEM_HOST_NO_ACCESS                       (1 << 9)

此处,0是CL_MEM_READ_WRITE的默认值:

  

用于指定分配和使用信息的位字段   比如应该用来分配缓冲区的内存竞技场   对象以及如何使用它。下表描述了   标志的可能值。如果为flags指定的值为0,则为   使用默认值CL_MEM_READ_WRITE。   来自:clCreateBuffer