【问题标题】:CUDA MemcpyHostToDeviceCUDA MemcpyHostToDevice
【发布时间】:2015-12-22 04:00:09
【问题描述】:
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 一个变量 db。在我的 db 变量上加载相同的值后,我想将此变量复制到设备上。编译没有错误,但是当我执行代码时,缓存有一些磨损,有时会重新启动电脑。我做错了什么?

【问题讨论】:

    标签: cuda memcpy nvcc


    【解决方案1】:

    使用__device__ 变量,您需要使用MemcpyToSymbolMemcpyFromSymbol 而不是cudaMemcpy。 所以就我而言,我必须使用

    cudaMemcpyToSymbol(d_db,&db,sizeof(DATASET)));
    

    【讨论】:

    • 你也可以声明DATASET *d_db;,然后用cudaMalloc(&d_db, SZM * sizeof(DATASET));分配内存(完成后别忘了cudaFree(d_db))。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多