Опции за запис на OpenCL в буфера

Възможен дубликат:
Два начина за създаване на буферен обект в opencl: clCreateBuffer срещу clCreateBuffer + clEnqueueWriteBuffer

Каква е разликата между копирането на данни в устройството веднага след създаването на буфер и по-късно? т.е.

cl_mem memObj = clCreateBuffer( context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR
, size, dataPtr, NULL);

or

cl_mem memObj = clCreateBuffer( context, CL_MEM_READ_ONLY , size, NULL, NULL);
clEnqueueWriteBuffer( commandQueue, memObj, CL_TRUE, 0, size, dataPtr, 0, NULL, NULL);

Аз съм чисто нов в OpenCL, така че просто се опитвам да разбера нещата, т.е. кой метод е най-добре да използвате.

Благодаря!


person wallacer    schedule 30.04.2011    source източник
comment
опа, да, това е дубликат   -  person wallacer    schedule 30.04.2011


Отговори (1)


Целият смисъл на нещо за създаване/поставяне на опашка (като цяло, не само в opencl) е, че след като създадете буфер, можете да пишете в него по-късно, след като изчислите какво искате да напишете, и да пишете произволен брой пъти. Няма функционална разлика между инициализиране на буфер с данни в него и създаване на буфер и след това добавяне на данните. Освен това всяка разлика в производителността трябва да бъде оптимизирана от вашия компилатор.

person Anish    schedule 30.04.2011