答复:报非法内存访问是在Host上, 还是在Device上?前者如果是CPU端的缓冲区不够, 也会报Access Violation的(0xc0000005)
如果是在device上,那是后续的kernel挂了。他在cudaMemcpy*()前后分别加上cudaError_t r = cudaDeviceSynchronize(); 然后看看,这样可以确定一点。(不看也行, cudaMemcpy*()给错设备指针/大小方面的参数会直接报告参数有问题之类的, 不会中途挂在device上), cuda-memcheck 他的程序 回车, 这种方式检测一下。
需要强调的是:你执行cudaMemcpy*(), 和你的"GPU设备线程块数量", 这有毛关系? 你确定报错是在传输该数组的时候吗?