我有一些非常简单的代码来近似均匀 3D 网格上的偏导数。我在科学 linux 上运行,当我使用 nvcc 编译时,我没有收到任何错误或警告。我检查cudaSuccess
每个人的回报cudaMalloc()
并cudaMemcpy()
打电话,确实一切正常。
当我在没有调试器的情况下运行程序时,一切似乎都运行良好,只是内核似乎并没有真正执行。我为输出分配的数组(初始化为全零)在内核启动后仍然全为零,即使我做了一些愚蠢的事情,比如让每个线程将数组的索引设置为 5。
因此,当我尝试在此代码上使用 cuda-gdb 时,它说cudaLaunch()
返回 0x9。我不确定错误 9 是什么,并且无法通过谷歌搜索快速找到它。那么在我写出代码之前,哪个错误是数字 9?是否有数字如何与某处的特定错误匹配的列表?
是否有错误编号如何映射到特定错误的在线列表?
我没有这台机器上的代码,但它是这样的:
dim3 dimGrid(1,1,1);
dim3 dimBlock(mx,my,mz);
x_derivative<<<dimGrid,dimBlock>>>(f_d,df_d);
哪里(目前)mx=my=mz=64
。
也许 64^3 的线程数太大了?显然,GPU 上的实际线程并不多(它是 Tesla C2050 fwiw),但我想我可以指定任意数量的线程?还值得注意的是,这是算法的“幼稚”版本,所以我不打算优化性能(还)。