首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同的线程块定义

不同的线程块定义
EN

Stack Overflow用户
提问于 2013-01-27 20:53:31
回答 1查看 316关注 0票数 0

在VS2010上测试代码时,我使用matlab中的PTX调用CUDA内核,如下所示:

代码语言:javascript
复制
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中使用相同的配置

代码语言:javascript
复制
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个线程,这是我的特斯拉C1060允许的数量,我是对的

代码语言:javascript
复制
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].

有没有解释为什么它可以在VS2010上正确运行,而不会像MATLAB中那样出现错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-03 00:18:21

在grad<<<>>>之后,C++代码段没有检查错误。MATLAB包装器有额外的错误检查。启动配置越界。在<<<>>>之后调用cudaGetLastError将报告启动配置错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14547532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档