[问题] 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