我有以下问题:
在我的塔式计算机上安装nVidia GTX690,使用CUDA 8.0和VS 2015我写了一个项目(完全正常工作:))
我尝试使用以下配置在我(非常旧)的笔记本电脑上导入它:
可以想象,项目编译得很好,但每次我尝试执行内核(使用任何块/线程的配置)然后同步设备返回错误代码30.这对应于未知的内部错误
我的GPU是否太老了,即使是简单的内核也无法运行(例如,对16Kb缓冲区单次调用cudaMalloc)?
或者,最大nVidia驱动程序版本和CUDA版本之间是否不匹配?
如果可以提供帮助,这里是nvidia-smi的输出:
+------------------------------------------------------+
| NVIDIA-SMI 341.74 Driver Version: 341.74 |
|-------------------------------+----------------------+----------------------+
| 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 GT 330M WDDM | 0000:01:00.0 N/A | N/A |
| N/A 52C P12 N/A / N/A | 972MiB / 979MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
当我尝试获得cudaProperties时,它是我得到的简化版本:
MapSMtoCores for SM 1.2 is undefined. Default to use 128 Cores/SM
Name : GeForce GT 330M
Total Global Memory : 1073741824
Total Constant Memory : 65536
Multi-Processor Count : 6
Compute Mode : 0
Concurrent Kernels : 0
Shared Memory Per Block: 16384
Registers Per Block : 16384
Max Threads Per Block : 512
Max Threads Dims : (512 | 512 | 64)
Max Grid Size : (65535 | 65535 | 1)
compute_mode
是否等于0令人担忧?还是0并发内核?
最后,它可能没有任何区别,但两个系统(塔式和笔记本电脑)都在Windows 10 64位上运行,代码在Visual Studio中仅针对64位进行编译。
[编辑] cudaMalloc和cudaFree工作正常。我正在尝试运行的最简单的内核是:
__global__ void Init(float* __restrict__ ptr, size_t sz, float value)
{
unsigned int tid = blockIdx.x * blockDim.x + threadIdx.x;
unsigned int step = gridDim.x * blockDim.x;
for (size_t i = tid; i < sz; i += step)
ptr[i] = value;
}
使用Init<<<1, 1>(ptr, 100, 1.0f)
答案 0 :(得分:1)
如果你们中的任何人遇到我同样的问题,那就是我必须做的事情:
size_t
替换unsigned int
cudaMallocHost
的任何引用,因为1.3