1

这是问题所在...我尝试在我自己的矢量容器中从主机复制到主机,如下代码

T* data_t = 0;
size_t msize = sizeof(T) * capacity;
checkCudaErrors( cudaHostAlloc((void**)&data_t, msize, cudaHostAllocPortable) );

msize = sizeof(T) * count;
checkCudaErrors( cudaMemcpy(data_t, data, msize, cudaMemcpyDefault) ); 
//data is also allocated using cudaHostAlloc with flag cudaHostAllocPortable

我能够在我的机器中使用我的机器(使用 Ubuntu 10.04 64 位和我的 GPU GTX 590 以及使用 CUDA 5.0)成功编译该代码,并使用此标志

-gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30

但是,当我尝试运行它时,它导致 cuda 出现错误,错误消息无效参数

注意:内存分配cudaHostAlloc仅用于测试,因为我设计了自己的容器,以便能够自动从主机复制到设备或主机到主机。

有没有人可以帮助我解决这个问题?谢谢你。

更新:

我尝试使用cudaMemcpyHostToHost内存副本(分配为带有标志的固定内存cudaHostAllocPortable)它只能在内存大小的某个限制下工作,超过该限制后,副本将给出错误消息分段错误

4

0 回答 0