运行完kernel函数后,我将数据从Device拷贝到Host,拷贝失败,可能是什么方面的原因呢
楼主您好,复制失败的最大除了您给出的参数错误外,最大的可能不在复制本身。
而在之前您的kernel失败,
请您检查cudaError_t result = cudaMemcpy(…);的返回值result,
看看result是否是cudaErrorUnknown之类的常见的kernel出错值。
感谢您的来访,请您一定要按我说的做。
输出错误可以用
printf(“%s\n”, cudaGetErrorString(result));
对楼上一个简单补充!
值得注意的是,cudaGetErrorString()得到的字符串和cudaError_t的枚举类型里面的各情况叫法是不一致的,请LZ注意,以免疑惑。
对楼上一个简单补充!
对,应该输出的是cudaGetLastError();
放在cudaGetErrorString()里面,把这个printf整体放在memcpy的后面看看!
总版大,我说的不是你那个意思,你3#的用法是可以的,因为2#是收集的cudaMemcpy()这个同步函数的返回值,这没问题的。
我的意思是,cudaSuccess这个cudaError_t的枚举值,用cudaGetErrorString得到的字符串是 no error。
这两个叫法并不统一,为了避免LZ迷惑,特此说明。