我正在遵循 CUDA 更简单的介绍教程。我从字面上复制并粘贴了完整的代码。但是,add.cu 编译时,当我运行它时,它不会打印任何内容。我又放了一些印刷语句并缩小了范围:
printf("Hin");
for (int i = 0; i < N; i++) {
x[i] = 1.0f;
y[i] = 2.0f;
}
printf("Bye");
它打印"Hi",但从不打印"再见"。所以内存初始化似乎有问题。这里出了什么问题?
我自己解决了这个问题。基本上,我的设备驱动程序搞砸了。要检查您是否遇到相同的问题,请以管理员身份运行命令提示符并运行nvidia-smi
。如果您遇到相同的问题,它会给您一个错误,指出它无法通信,因为您的设备驱动程序不是最新的或错误的或类似的。
为您的计算机下载最新的nvidia驱动程序(我在戴尔驱动程序和Downlods上找到了我的驱动程序(并安装它。现在,当您在命令提示符下以管理员身份运行nvidia-smi
时,它应该为您提供有关设置(驱动程序版本、Cuda 版本等(的一大堆详细信息,如下所示:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 441.14 Driver Version: 441.14 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 105... WDDM | 00000000:01:00.0 Off | N/A |
| N/A 30C P8 N/A / N/A | 78MiB / 4096MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
您现在应该能够使用统一内存编译和运行 Cuda 脚本。