cuda里的求余运算

chenbo888666999 2010-08-13 09:14:52
cuda里的求余运算结构好奇怪呀:

__device__ unsigned int dsync=0;
unsigned int sync=0;

__global__ void kernel()
{
int tid=threadIdx.x;
int bid=blockIdx.x;

if(bid%2==0 && tid==0)
{
atomicInc(&dsync,33);
}
}
由于一直没找到程序的错误,所以写了一个简单的测试程序,测试原来程序中使用院子函数的情况。我的bid范围为0~31,按理说经过上面的kernel运算后dsync应该是16才对呀,但是输出的结果却是dsync=26,但是我把if(bid%2==0 && tid==0)改为if(bid<16 && tid==0)结构就是16,为什么求余运算都不对呀?
...全文
700 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
agathah 2011-10-31
  • 打赏
  • 举报
回复
如果是对2取模,可以用位操作代替?
试试看if((bid&1)==0 && tid==0) ?
dirdirdir3 2011-10-26
  • 打赏
  • 举报
回复
很有可能是操作符优先级的问题..........
if((bid%2)==0 && tid==0)
guankm 2011-10-24
  • 打赏
  • 举报
回复
cuda不建议做除法和取模运算。。。
ddweidong 2011-10-19
  • 打赏
  • 举报
回复
我也遇到这种问题,求余和除法都没作用,cuda-gdb调试打印求余和除法的结果时,给出这个警告: Variable is not live at this point. Returning garbage value.
CUDA_v10.2的头文件和库文件,支持VS2015编译。CUDA(Compute Unified Device Architecture)是显卡厂商NVIDIA推出的通用并行计算平台和编程模型,包含CUDA指令集架构和GPU并行计算引擎。该平台支持使用C、C++、Python、Fortran等语言编写程序,通过扩展编程接口实现CPU与GPU协同计算,开发者可调用CUFFT、CUBLAS等数学运算库加速应用程序运行 [5] [13]。其系统架构分为开发库、运行期环境和驱动三层,编程模型采用Grids-Blocks-Threads线程层次结构和SIMT并行模式 [14]。 CUDA-X作为基于CUDA构建的扩展架构,集成400多个加速库和微服务工具,支持跨PC、云端及超级计算机部署,应用于数据处理、人工智能和高性能计算领域 [12]。2023年,NVIDIA发布RTX4090和RTX4080笔记本电脑GPU,其中RTX4090搭载9728个CUDA核心 [3] [21]。该平台通过PTX中间指令集实现硬件兼容性,并推出CUDA-Q量子计算工具集,支持量子经典混合编程和仿真加速,实现QPU(量子处理单元)与GPU超级计算机间微秒级数据交互 [11] [15] [17] [20]。2025年配套CUDA 12.9引入系列特定功能集(f后缀),提升代码在GPU架构间的兼容性 [16]。 CUDA编程模型通过global声明说明符定义GPU内核函数,使用<<>>语法配置线程参数,支持一维、二维或三维线程块组织结构 [18]。华为推出兼容CUDA编程语言的GPU芯片,摩尔线程发布MUSA架构实现CUDA代码自动转换 [19] [22]。NVIDIA持续扩展CUDA生态,截至2025年已构建350余个专用库覆盖计算光刻、医学影像等技术领域 [20]。

589

社区成员

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

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