0

通常、clCreateImage2D の 2 番目のパラメーターはフラグ CL_MEM_READ などですが、サンプル コードの 1 つで 0 を見つけました (P. no: 80、openCL を使用した Heterogeneous Computing ):

 //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 のデフォルト値です。

バッファ オブジェクトの割り当てに使用する必要があるメモリ アリーナやその使用方法など、割り当ておよび使用情報を指定するために使用されるビット フィールド。次の表に、フラグに使用できる値を示します。flags に指定された値が 0 の場合、デフォルトの CL_MEM_READ_WRITE が使用されます。From: clCreateBuffer

于 2012-10-29T09:03:04.860 に答える