在 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];
知道每个块有超过 512 个线程,这是我的 TESLA C1060 的允许数量,我是对的
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].
任何解释为什么它在 VS 2010 上正确运行而没有像 MATLAB 中发生的错误?