gpt4 book ai didi

c++ - 从 cpp 传递到 CUDA 时矩阵显示为空

转载 作者:行者123 更新时间:2023-11-28 08:25:37 25 4
gpt4 key购买 nike

我已经将二维数组从 C++ 类传递给 CUDA 函数;然而,一旦在 CUDA 函数中,矩阵中的数据就消失了。我仍在主机中,而不是设备中,所以我不明白我做错了什么,因为这应该非常简单。

这是C++

int main()
{
const int row=8;
const int column=8;
int rnum;
srand(time(0));
rnum = (rand() % 100) + 1;

float table[row][column];

for(int r=0; r<row; r++){
for(int c=0; c<column;c++){
table[row][column] = (rand()%100) + 1.f;
cout << table[row][column] << " ";
}
cout << "\n";
}

//CUDA
handleMatrix(&table[0][0], 8);

}

这是刚刚打印出矩阵的 CUDA 代码。

void handleMatrix(float * A, int size)
{

printf("&A[0]=%i\n",&A);
printf("A[0] is %f \n",A[0]);
for(int j=0; j<size; j++){
for(int k=0; k<size;k++){
printf("%f ",A[j +size*k]); // << " ";
}
printf("\n");
}
}

在 C++ 文件中——矩阵的打印输出有实数,但 CUDA 函数只为矩阵和 A[0] 的地址打印出 0。我不知道这是否意味着我没有在 2 之间正确传递矩阵,或者一旦我将矩阵传递给 CUDA 函数,我是否应该对矩阵做些什么。

最佳答案

哈,需要一段时间才能找到它。检查矩阵随机化代码中的索引。 :) 您使用了错误的变量并且从未初始化浮点值。

关于c++ - 从 cpp 传递到 CUDA 时矩阵显示为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4173584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com