0

次のように VS 2010 でコードをテストするときに、matlab の PTX を使用して CUDA カーネルを呼び出しています。

int TPB = 256; 
int BPG = (Nx + TPB -1 ) / TPB;
dim3 blk(TPB,TPB,1);
dim3 grid(BPG ,BPG,1);
grad<<< grid,blk>>>(dev_y,dev_x,dev_b,dev_t,Nx,Ny);

matlabで同じ構成を使用しようとしています

TPB = 16; 
BPG = floor((Nx + TPB -1 ) / TPB);
grad = parallel.gpu.CUDAKernel('reg.ptx','reg.cu','grad');
grad.ThreadBlockSize=[TPB TPB 1];
grad.GridSize = [BPG BPG];

私のTESLA C1060の許容数であるブロックあたり512スレッドを超えていることを知っており、私は正しかった

Invalid size input to kernel ThreadBlockSize. You must provide a vector of up to 3 positive   integers whose product is <= 512. The maximum value in each dimension is: [512,512,64].

MATLABで起こったようなエラーなしでVS 2010で正しく実行される理由は何ですか?

4

1 に答える 1

0

C++ コード セグメントは、grad<<<>>> の後にエラーをチェックしていません。MATLAB ラッパーには追加のエラー チェックがあります。起動構成が範囲外です。<<<>>> の後に cudaGetLastError を呼び出すと、起動構成エラーが報告されます。

于 2013-02-02T16:18:20.583 に答える