cuda流和流多处理器



在nvidia的cuda技术中。

有两个概念:cuda编程中的流的概念和流多处理器(在Maxwell架构中也称为SMM,有时简称为SM)的概念,如何理解这两者?

情况一:我只是使用默认流来执行内核,并且块号足够大。在这种情况下,我的所有5个流多处理器(GTX 750 Ti有5个SMM,即640核)是否都参与处理块,或者只有一个流多处理机参与处理一个默认流

案例二:我使用cudaStreamCreate()创建5个(或更多)流,并用它们执行5个不同的内核,其中所有5个内核都是独立的,这5个内核会在物理上并行处理吗?

cuda串流多处理器之间没有连接。

无论您使用哪种流安排来启动内核,如果有足够的块,所有SM都将参与执行该内核。

如果您在5个独立的流中启动5个内核,那么您的内核很可能会大致按顺序执行,除非所有内核在资源使用方面都很小,在这种情况下,它们可能会同时执行。

有两个概念:cuda编程中的流的概念和流多处理器(在Maxwell架构中也称为SMM,有时简称为SM)的概念,如何理解这两者?

尽管术语相似,但这两个概念都不相关。

流式多处理器是一个硬件组件,由几个以SIMD方式执行内核的流式处理器组成。

只是一个命令队列,您可以在其中对命令(是的…)进行排队,例如内核执行或内存拷贝。流并行执行,因此如果您有两个独立的内核,您可能希望在单独的流中执行它们,以(可能)提高性能。如果你的设备支持,你也可以重叠内核执行和数据传输

情况一:我只是使用默认流来执行内核,并且块号足够大。在这种情况下,我的所有5个流多处理器(GTX 750 Ti有5个SMM,即640核)是否都参与处理块,或者只有一个流多处理机参与处理一个默认流

假设块号足够大,则所有SM都将繁忙。

案例二:我使用cudaStreamCreate()创建5个(或更多)流,并用它们执行5个不同的内核,其中所有5个内核都是独立的,这5个内核会在物理上并行处理吗?

这取决于日程安排。如果你的内核计算可以重叠(它们没有完全利用GPU),那么它们肯定会重叠。

相关内容

  • 没有找到相关文章

最新更新