小编t_c*_*arn的帖子

如何使用cudaMalloc/cudaMemcpy作为指向包含指针的结构的指针?

我看过这个网站和其他人,并没有任何效果.我正在为我的具体案例提出问题.

我有一堆矩阵,目标是使用内核让GPU对所有矩阵执行相同的操作.我很确定我可以让内核工作,但我不能让cudaMalloc/cudaMemcpy工作.

我有一个指向Matrix结构的指针,它有一个名为elements的成员,指向一些浮点数.我可以做所有非cuda mallocs就好了.

感谢您的帮助.

码:

typedef struct {
    int width;
    int height;
    float* elements;
} Matrix;

int main void() {
    int rows, cols, numMat = 2; // These are actually determined at run-time
    Matrix* data = (Matrix*)malloc(numMat * sizeof(Matrix));

    // ... Successfully read from file into "data" ...

    Matrix* d_data;
    cudaMalloc(&d_data, numMat*sizeof(Matrix)); 
    for (int i=0; i<numMat; i++){
        // The next line doesn't work
        cudaMalloc(&(d_data[i].elements), rows*cols*sizeof(float));

        // Don't know if this works
        cudaMemcpy(d_data[i].elements, data[i].elements,  rows*cols*sizeof(float)), cudaMemcpyHostToDevice);
    }

    // ... Do …
Run Code Online (Sandbox Code Playgroud)

pointers cuda

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

cuda ×1

pointers ×1