CUDA MemcpyHostToDevice
我有一个设备变量d_db主机上的变量db。在db变量上加载相同的值后,我想在设备上复制这个变量。编译时没有错误,但是当我执行代码时,有一些关于缓存的问题,有时电脑会重新启动。我做错了什么?使用CUDA MemcpyHostToDevice,cuda,memcpy,nvcc,Cuda,Memcpy,Nvcc,我有一个设备变量d_db主机上的变量db。在db变量上加载相同的值后,我想在设备上复制这个变量。编译时没有错误,但是当我执行代码时,有一些关于缓存的问题,有时电脑会重新启动。我做错了什么?使用\uuuuu设备\uuuuuuu变量您需要使用memcpytocomsymbol和MemcpyFromSymbol而不是cudaMemcpy。 所以在我的情况下,我必须使用 typedef struct { int M; int N; int
\uuuuu设备\uuuuuuu
变量您需要使用memcpytocomsymbol
和MemcpyFromSymbol
而不是cudaMemcpy
。
所以在我的情况下,我必须使用
typedef struct {
int M;
int N;
int records[NMAX][SZM];
int times[NMAX];
bool prime[NMAX];
} DATASET;
typedef int ITEMSET[SZM];
__device__ DATASET d_db;
DATASET db;
int main(void) {
loadDB();
cudaMemcpy(&d_db, &db, sizeof(DATASET), cudaMemcpyHostToDevice);
...
您还可以声明
数据集*d_db然后使用cudamaloc(&d_db,SZM*sizeof(DATASET))分配内存代码>(当你完成它时,别忘了cudaFree(d_db)
。
cudaMemcpyToSymbol(d_db,&db,sizeof(DATASET)));