2
我想將我的C代碼移植到CUDA。主要計算部分包含3個嵌套循環:CUDA的嵌套循環
for (int i=0; i< Nx;i++){
for (int j=0;j<Ncontains[i];j++){
for (int k=0;k< totalVoxels;k++){
.......
}
}
}
如何將它轉換爲我的CUDA內核?有兩個for循環,我可以做這樣的事情:
int n= blockIdy.y * blockDim.y + threadIdx.y;
int i= blockIdx.x * blockDim.x + threadIdx.x;
但我怎麼能最初這得到運行?
,做這樣一來,我就不得不調用內核呀? - >內核<<< Nblock,Nthreads_per_block >>>例如,我可以說內核<<<20,16> >>?有沒有一種更清潔,更有效的方式來調用該內核?對不起,我很新...並感謝Anycorn。 – Manolete
@人見更新。另請注意,並行強度取決於您的具體情況。以上是*只是*示例 – Anycorn
我知道它並不能真正改善,但我的第一個目標是讓它在GPU上正確運行。優化將進入第二階段。我會先嚐試理解你的答案,然後我會盡力提高速度。你知道我在哪裏可以學習所有這些「技巧」嗎?我已經閱讀了幾乎所有的NVIDIA手冊和書籍,但它總是與矩陣有關,而不是循環或算法... – Manolete