Я передал 2D-массив из класса 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 просто печатаетout 0 для матрицы и для адреса A [0].Я не знаю, означает ли это, что я неправильно передаю матрицу между двумя, или я должен что-то сделать с матрицей, как только получу ее в функцию CUDA.