协作组:灵活的 CUDA 线程编程
【摘要】
英文原文 来自 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)