README

第6章 流与事件

CUDA最著名的技术是能够实现细粒度并发。它带有可以组合使用共享内存和线程同步使线程在内存块内部密切合作的硬件设施。但它也有支持更粗粒并发的硬件和软件设施。

  • CPU/GPU的并发:由于它们是独立的设备,CPU和GPU可以彼此独立地运作。
    ·内存复制/内核处理并发:对于有一个或多个复制引擎的GPU,在流处理器簇处理内核时,主机与设备间的内存复制操作也可以进行。
    ·内核并发:SM 2.x架构和更高级别的硬件可以并行运行多达4内核。
    ·多GPU的并发:针对有足够的计算密度的问题,多GPU可以并行操作。(第9章是专门介绍多GPU程序设计的。)

CUDA流支持这些类型的并发。在一个给定的流中,操作顺序进行,但在不同的流上的操作可以并行地执行。CUDA流需要同步机制来协调并行执行,而这些机制由CUDA事件提供。CUDA事件可以被异步

“记录”到流中,并且当该CUDA事件之前的操作完成时,CUDA事件就会收到通知信号。

对于在GPU上的多个引擎之间的同步以及多个GPU之间的同步而言,CUDA事件可用于CPU/GPU的同步。它们还提供了一个基于GPU的计时机制,并且这个机制不会被系统事件(如页面错误、磁盘或网络控制器的中断)扰乱。对于整体计时而言,使用系统时间是最佳的,但要优化内核程序或者定位一系列流水线化的GPU操作中最耗时部分,CUDA事件是大有用处的。本章报告的全部性能结果都是在亚马逊EC2云服务器的cgl.4xlarge实例上得到的,关于该实例的描述见4.5节。

README - CUDA专家手册 | OpenTech