2
我想了解如何將基本C/C++循環轉換爲CUDA內核。讓我們把它簡單:將C/C++ for循環轉換爲CUDA
for (int i=0;i < MAXi;i++)
for(int j=0;j< MAXj;j++){
...code that uses i and j....
}
每一個我需要計算MAXj元素。 對某些人來說這可能是非常基本的,但我在這裏真的很掙扎。假設Maxj約爲100萬,MAXj = 1000000;並且我們希望所有線程都能工作。 我已經成功只用內循環:
int tid=threadIdx.x + blockDim.x*blockIdx.x + blockDim.x*gridDim.x*blockIdx.y;
使用2D塊,我怎麼能並行這種循環?它們在C中非常普遍,學習如何去做會非常有用。
答案完全取決於「......使用i和j的代碼......」。在問題中添加一些更多的細節,並可能得到有用的答案。你可能會發現[這個線程](值得尋找)(http://stackoverflow.com/questions/5643178/cuda-how-to-get-grid-block-thread-size-and-parallalize-non-square-matrix-calcul)也是。 – talonmies