[問題] CUDA現在可以用A[i][j]來存取了嗎

作者: snow3804 (snow3804)   2018-01-07 12:15:17
開發平台(Platform): (Ex: Win10, Linux, ...)
win7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Visual Studio 2017
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
CUDA9
問題(Question):
以前在CUDA都要用A[i*col+j]來表示A[i][j]的值
但我在這個網站有看到在CUDA程式中使用A[i][j]
但我執行結果印出來c矩陣都是0
請問是哪裡有問題
餵入的資料(Input):
預期的正確結果(Expected Output):
印出C=A+B的結果
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
http://www.cnblogs.com/jugg1024/p/4349243.html
http://codepad.org/iXPPGSAD
補充說明(Supplement):
作者: schizophrena (你很記者你很腦殘)   2018-01-07 12:43:00
你看到的是CPU的code哦, 下面才是CUDA下面有一段是有把ptr** assign到ptr*去的部份
作者: friends29 (涼哥哥)   2018-01-09 14:00:00
為了要在Kernel裡面用[][]結果繞了一大圈
作者: hunandy14 (Charlott.HonG)   2018-01-11 20:20:00
傳入的參數 可以是 int** 就可以用二維了
作者: sunneo (艾斯寇德)   2018-01-11 20:25:00
看有沒有UVA supported
作者: hunandy14 (Charlott.HonG)   2018-01-11 20:51:00
我知道問題點了,不過我覺得應該不能那樣用cudaMalloc((void**)(&dev_A), M*sizeof(int*));這樣行實際應該是 void*** 不過他強制cast成**
作者: wrt (一片小蛋糕)   2018-01-11 22:31:00
這種二維的存取會降低效能吧 早點習慣一維陣列是比較好嗎?
作者: kent12342004 (Kent)   2018-01-11 23:26:00
用pitch仿二維也可以
作者: freef1y3 ( )   2018-01-11 23:37:00
用 int (*ptr)[N] 來接 int a[M][N] 就不用 malloc 兩層不過 CUDA 上 N 只能是常數的樣子
作者: snow3804 (snow3804)   2018-01-12 10:53:00
謝謝大家提供意見
作者: hunandy14 (Charlott.HonG)   2018-01-15 01:51:00
cudaMalloc 指標寫在參數可能是要限制只能用一維紋理記憶體可以用二維,不過讀的方式是用函式tex2D(rT, x, y) 不過這樣跟自己寫一轉的函式也差不多

Links booklink

Contact Us: admin [ a t ] ucptt.com