0
A
回答
1
一般在CUDA,你將不得不您的陣列轉換成線性存儲器如果堅持使用M(在2D陣列的情況下,它們應該被轉換到線性存儲器使用cudaMallocPitch
)
[i] [j]符號,您可以將設備上的陣列分配爲「陣列陣列」。在這種情況下,您將使用cudaMalloc
分配數組的每一行,然後將指針存儲到指針數組中的每一行。您將不得不在設備上分配這個指針數組!
因此,當你說M [i]時,它會給你第i
行的指針,你可以使用該指針的[j]索引。
從過去三週嚴重關注這個東西的傢伙(又名我),認爲這是你能做的最糟糕的事情。分配遍佈全球的內存,很可能它們都不符合CUDA對齊要求。因此訪問沒有完全合併,並且訪問延遲會損害內核的性能。堅持線性和傾斜的內存以獲得最佳性能。索引約定可能有點混亂和尷尬起初,但你會習慣它:-)
相關問題
- 1. 乘以3D矩陣和2D矩陣CUDA
- 2. CUDA:在GPU上分配2D陣列
- 3. CUDA矩陣問題
- 4. cuda子矩陣
- 5. CUDA 2D陣列nvidia
- 6. CUDA中非矩形矩陣的計算機逆矩陣
- 7. CUDA | OpenCV | GPU模塊|如何訪問cv :: gpu :: GpuMat上的元素
- 8. Matlab使用共享矩陣數據的GPU/CUDA操作
- 9. CUDA:從GPU發送數據到GPU
- 10. Cuda矩陣加法
- 11. 矩陣乘法CUDA
- 12. Cuda矩陣乘法
- 13. CUDA基本矩陣加 - 大型矩陣
- 14. CUDA 2D或3D陣列
- 15. CUDA 2D陣列映射
- 16. 管理2D CUDA陣列
- 17. CUDA矩陣乘法:輸出零
- 18. 用CUDA減少矩陣列
- 19. 2D陣列訪問衝突
- 20. 訪問2D指針陣列
- 21. CUDA中的矩陣乘法的問題
- 22. CUDA:在兩個維度上訪問任意長矩陣
- 23. 情節2D矩陣
- 24. QStrings的2D矩陣
- 25. 查找2D矩陣
- 26. 轉換3D矩陣級聯2D矩陣
- 27. 將2D矩陣轉換爲3D矩陣?
- 28. 將3d矩陣重塑爲2d矩陣
- 29. 乘以2D矩陣的一維矩陣
- 30. Matlab的變換2D矩陣3D矩陣
看看@talonmies'這個問題的答案的第二部分:[我怎麼能加起來兩個2D (pitched)數組使用嵌套循環?](http://stackoverflow.com/questions/6137218/how-can-i-add-up-two-2d-pitched-arrays-using-nested-for-loops)。 – JackOLantern
#define] [* width + ===> M [i] [j]在背景上變成M [i * width + j]也許吧? –