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

网友投稿 692 2022-05-29

英文原文 来自 NVIDIA Developer Blog

官方手册

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

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

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

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

任务调度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:分布式计算的优点和缺陷
下一篇:elasticsearch match模糊查询
相关文章