私があなたの質問を正しく理解しているなら、あなたが本当にやろうとしていることは、の配列から生のポインタの配列を作成することですthrust::device_vectors
。あなたはそのようにこれを行うことができるはずです:
const int N = 10;
thrust::device_vector<int> iVec[N];
int * iRaw[N];
for(int i=0; i<N; i++)
iRaw[i] = thrust::raw_pointer_cast(iVec[i].data());
int ** _iRaw;
size_t sz = sizeof(int *) * N;
cudaMalloc((void ***)&_iRaw, sz);
cudaMemcpy(_iRaw, iRaw, sz, cudaMemcpyHostToDevice);
[免責事項:ブラウザで記述され、コンパイルされておらず、テストされておらず、自己責任で使用してください]
上記のコードスニペットで_iRaw
は、の各デバイスベクトルの生のポインタを保持しiVec
ます。本当に必要な場合は、それをカーネルに渡すことができます。