2011-04-30 52 views
0

可能重複:
Two ways to create a buffer object in opencl: clCreateBuffer vs. clCreateBuffer + clEnqueueWriteBufferOpenCL的寫緩存選擇

是什麼設備在緩衝區建立與後立即複製數據之間的差異? 即。

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

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

我是全新的,以OpenCL的,所以我只是想搞清楚這些事情即。哪種方法最適合使用。

謝謝!

+0

哎呀,是的,這是重複的 – wallacer 2011-04-30 06:16:30

回答

0

創建/入隊事物(通常不僅僅是在opencl中)的要點是,一旦你創建了一個緩衝區,你可以在計算你想要寫的內容後寫信給它,然後寫一個任意數字的時代。初始化一個緩衝區與其中的數據並創建一個緩衝區然後添加數據之間沒有功能上的區別。此外,任何性能差異都應該由編譯器進行優化。