CudaMalloc在分配内存时失败

时间:2018-09-23 01:36:43

标签: c++ cuda

我正在尝试使用cudaMalloc在GPU上分配大量内存:cudaMalloc((void**)&count_d, N*sizeof(long));

unsigned long N = 999999999L;

我在那个地方收到一条错误消息,所以问题是我分配的内存过多还是在做其他错误的事情。

错误消息我得到了什么:

CUDA error : an illegal memory access was encountered (77)

1 个答案:

答案 0 :(得分:0)

就像@talonmies所说的,和cudaMalloc() documentation tells you一样,调用cudaMalloc()不会触发“非法内存访问”错误-这与 device 代码的非法访问有关。 (主机端代码进行非法内存访问会在Unix上导致SIGSEGV信号,在Windows上导致保护错误。)

因此,cudaMalloc()之后如何出现此错误?很简单:它发生得更早了,您之前根本就没有检查过错误。或者您没有同步流以执行待处理的内核。

最后,考虑使用以评论形式发布的链接@alterIgel,以了解有关CUDA API调用的正确错误检查的信息。