调试过程中的奇怪问题

wts_net 2009-06-19 11:16:00
__shared__ float spc[256];
__shared__ int sc_num[256];
__shared__ int s_pos[512];

1.unsigned int tid = threadIdx.x;
2.unsigned int index = blockIdx.x * blockDim.x + threadIdx.x;

3.CUT_BANK_CHECKER(spc , tid) = g_pc[index];
4.CUT_BANK_CHECKER(sc_num , tid) = g_ccount[index];
5.CUT_BANK_CHECKER(s_pos , tid*2) = g_pos[index*2];
6.CUT_BANK_CHECKER(s_pos ,tid*2+1) = g_pos[index*2+1];
我在3,4,5,6都加了断点,但是 一运行的时候设在4,5,6处的断点都消失了,只剩下3处的断点,而且运行到下面时候,1处的tid 为4016,而我设的线程数为256,1处的赋值没有起作用吗?程序中遇到很多类似的问题,请大虾们指教
...全文
57 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1处断点在1之前吧?这时tid = threadIdx.x; 还没有执行.
3处断点在3之前吧?这时index = blockIdx.x * blockDim.x + threadIdx.x; 刚执行完毕可以中断.

CUT_BANK_CHECKER的宏定义如下:
#if __DEVICE_EMULATION__
// Interface for bank conflict checker
#define CUT_BANK_CHECKER( array, index) \
(cutCheckBankAccess( threadIdx.x, threadIdx.y, threadIdx.z, blockDim.x, \
blockDim.y, blockDim.z, \
__FILE__, __LINE__, #array, index ), \
array[index])
#else
#define CUT_BANK_CHECKER( array, index) array[index]
#endif
比较怪,等价于(array[index]),多了一层(),也许如此不能定断点吧....
wts_net 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 l7331014 的回复:]
编译模式?emuDebug?
[/Quote]
是的
wts_net 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 wts_net 的帖子:]
__shared__ float spc[256];
__shared__ int sc_num[256];
__shared__ int s_pos[512];

1.unsigned int tid = threadIdx.x;
2.unsigned int index = blockIdx.x * blockDim.x + threadIdx.x;

3.CUT_BANK_CHECKER(spc , tid) = g_pc[index];
4.CUT_BANK_CHECKER(sc_num , tid) = g_ccount[index];
5.CUT_BANK_CHECKER(s_pos , tid*2) = g_pos[index*2];
6.CUT_BANK_CHECKER(s_pos ,tid*2+1) = g_pos[…
[/Quote]
是的
  • 打赏
  • 举报
回复
编译模式?emuDebug?

589

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧