09/12/08 01:19:36
すみません、かなり初心者です。
行ごとに要素数の違う配列をデバイス側に渡したいんですけど、
a=1;
//ホスト側
float** mat=(float**)malloc(size);
for(i=0;i<num;i++){
mat[i]=(float*)malloc(size / a);
a*=2;
}
//デバイス側
float** mat_d;
CUDA_SAFE_CALL(cudaMalloc((void**)&mat_d,size));
for(i=0;i<num;i++){
CUDA_SAFE_CALL(cudaMalloc((void**)&mat_d[i],size/a));
a*=2;
}
CUDA_SAFE_CALL(cudaMemcpy(mat_d,mat,size,cudaMemcpyHostToDevice));
for(i=0;i<M;i++){
CUDA_SAFE_CALL(cudaMemcpy(mat_d[i],mat[i],size/a,cudaMemcpyHostToDevice));
a*=2;
}
というようにはできないんでしょうか?