当-deviceemu, cuda-gdb都fail的时候,我们该怎么办?

richardingding 2010-04-08 06:33:20
最近一直在调试cuda code。数据机构比较麻烦一点,是pointer inside struct。kernel逻辑本身并不复杂。我是在Linux下写的cuda code。使用cuda-gdb时候报错,连main函数都进不去。使用emulation模式说invalid argument。我想请问一下,除了这些外,还有什么好的cuda调试方式么???
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可能是强制类型转换,编译器不能正确转换类型造成的.
拆成两个语句(赋值+累加)试试.
richardingding 2010-04-08
  • 打赏
  • 举报
回复
程序全部运行的话有问题,我一行一点的释放,找到了出错的地方竟然是
accumData += (int_least40_t)tmpData; // int_least40_t 自己声明的类型,
这样一句简单的语句,只有copy出来看看了。还有什么其他的方法么?希望能够交流一下。
  • 打赏
  • 举报
回复
1)程序本身还能运行结束吗?不能的话,先code review.至少让他能运行起来再说.
2)看不清楚的话,把程序全注释掉(空程序肯定能运行吧,呵呵),然后一点一点"放"出来.
3)运行起来了,结果不正确的话.开一辅助空间.在想debug的地方,把值赋到辅助空间中,kernel结束后把辅助空间cudamemcpy到主机空间,printf.

579

社区成员

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

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