0
所以我一直在這個問題上停留了一段時間。我的結構看起來像這樣:CUDA,動態數組+數組。 malloc和copy
typedef struct
{
int size;
int dim[DIMENSIONS];
float *data;
}matrix;
現在,我的問題是如何malloc和memcpy。這是我如何做它:
matrix * d_in;
matrix * d_out;
const int THREADS_BYTES = sizeof(int) + sizeof(int)*DIMENSIONS + sizeof(float)*h_A->_size;
cudaMalloc((void **) &d_in, THREADS_BYTES);
cudaMemcpy(d_in, h_A, THREADS_BYTES, cudaMemcpyHostToDevice);
編輯:我這是怎麼分配的h_a:
matrix A; // = (matrix*)malloc(sizeof(matrix));
A._dim[0] = 40;
A._dim[1] = 60;
A._size = A._dim[0]*A._dim[1];
A._data = (float*)malloc(A._size*sizeof(float));
matrix *h_A = &A;
哪裏h_A是我分配的矩陣。我打電話給我的內核是這樣的:
DeviceComp<<<gridSize, blockSize>>>(d_out, d_in);
然而,在我的內核我不能從結構,只有數組和變量到達的任何數據。
非常感謝!這實際上解決了我的問題! – Saph 2013-05-15 07:48:14