0

通常 clCreateImage2D 中的第二个参数是标志 CL_MEM_READ 等。但我在其中一个示例代码中发现它为 0(P. no: 80, Heterogeneous Computing using openCL ):

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

为什么会这样?

4

1 回答 1

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 的默认值:

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

于 2012-10-29T09:03:04.860 回答