协作组:灵活的 CUDA 线程编程

举报
ShaderJoy 发表于 2022/01/01 00:59:44 2022/01/01
【摘要】 英文原文 来自 NVIDIA Developer Blog 官方手册 在有效的并行算法中,线程通过合作并共享数据来执行集体计算。要共享数据,线程必须同步。共享的粒度因算法而异,因此线程同步应该是灵活的。使同步成为程序的显式部分,来确保安全、可维护和模块化。为了满足这些需求,CUDA 9 引入了协作...

在有效的并行算法中,线程通过合作并共享数据来执行集体计算。要共享数据,线程必须同步。共享的粒度因算法而异,因此线程同步应该是灵活的。使同步成为程序的显式部分,来确保安全、可维护和模块化。为了满足这些需求,CUDA 9 引入了协作组,它通过扩展 CUDA 编程模型,从而允许内核动态地组织线程组。

从历史上看,CUDA 编程模型为同步协作线程提供了一个单一的、简单的构造:线程块内的所有线程之间使用__syncthreads() 函数实现屏障。然而,CUDA 程序员通常需要定义和同步比线程块小的线程组,以便以“集体”组范围的函数接口的形式实现更大的性能提升、设计灵活性和软件重用。

协作组编程模型描述了 CUDA 线程块内部跨线程块的同步模式。它提供了用于定义、分区和同步线程组的 CUDA 设备代码 APIs。它还提供主机端 APIs 来启动 “所有线程都保证并发执行” 的网格,以支持线

文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/88680871

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。