【发布时间】:2013-03-03 01:21:32
【问题描述】:
我从http://llpanorama.wordpress.com/2008/05/21/my-first-cuda-program/找到了以下程序
很遗憾我不能在这里复制粘贴,因为代码变得乱七八糟
它将一个数字向量作为输入,然后将向量乘以自身作为输出,我在计算机上安装的模拟器上运行它,它会给出以下输出:
0 0.000000
1 1.000000
2 4.000000
3 9.000000
4 16.000000
5 25.000000
6 36.000000
7 49.000000
8 64.000000
9 81.000000
但是,如果我决定在运行 debian 且具有 cuda 兼容 gpu 的远程计算机上运行它,请输入
nvcc test.cu -lcudart -o test
./test
它给了我以下输出
0 0.000000
1 1.000000
2 2.000000
3 3.000000
4 4.000000
5 5.000000
6 6.000000
7 7.000000
8 8.000000
9 9.000000
为什么会这样?提前谢谢!
【问题讨论】:
-
首先要考虑的是卡的兼容性可能存在双重/浮动问题。您在每种情况下都运行浮点数还是双打?我相信随着 CUDA 架构的成熟,浮点/双精度功能会发生一些变化。
-
该 URL 处的程序不进行任何错误检查。我建议为所有 CUDA API 调用和内核启动添加错误检查。
-
通过查看代码,计算中涉及的数组是一个浮点变量