在CUDA發現連續指數涵蓋多個塊,從而incerase指數的範圍陣列,我們做一些事情是這樣的:的OpenCL相當於CUDA
主機端代碼:
dim3 dimgrid(9,1)// total 9 blocks will be launched
dim3 dimBlock(16,1)// each block is having 16 threads // total no. of threads in
// the grid is thus 16 x9= 144.
設備代碼
...
...
idx=blockIdx.x*blockDim.x+threadIdx.x;// idx will range from 0 to 143
a[idx]=a[idx]*a[idx];
...
...
在實現上述情況下,OpenCL中的等效物是什麼? CUDA和OpenCL之間
您可能需要更改設備端代碼。使用您啓動的配置,idx的範圍從0到11。你可能想做idx =(blockIdx.y * gridDim.x + blockIdx.x)*(blockDim.x * blockDim.y)+ threadIdx.y * blockDim.x + threadIdx.x;爲它具有範圍0 143之間和 –
哎呀這是通過mnistake ...編輯塊暗淡,一個暗淡 – gpuguy
所以,我沒有這樣說: 主機側: localWorkSize [0] = 16; globalWorkSize [0] = 9 * 16; 裝置側: INT I = get_global_id(0) 一個[IDX] = A [IDX] * A [IDX]; ... ... – gpuguy