gpt4 book ai didi

cuda - 帮助我了解CUDA

转载 作者:行者123 更新时间:2023-12-03 14:29:14 25 4
gpt4 key购买 nike

我在使用cuda了解NVIDIA gpu架构中的线程时遇到了一些麻烦。

请任何人澄清这些信息:
8800 gpu具有16个SM,每个SM 8个SP。因此我们有128个SP。

我正在查看斯坦福大学的视频演示,并且说每个SP都能同时运行96个线程。这是否意味着它(SP)可以同时运行96/32 = 3个变形?

此外,由于每个SP可以运行96个线程,因此每个SM中都有8个SP。这是否意味着每个SM可以同时运行96 * 8 = 768个线程?但是,如果每个SM一次可以运行一个块,并且一个块中的最大线程数为512,那么同时运行768个线程并且最多具有512个线程的目的是什么?

一个更普遍的问题是:如何将块,线程和扭曲分配给SM和SP?我读到每个SM一次都会执行一个块,并且一个块中的线程被分为warp(32个线程),而SP执行warp。

最佳答案

您应该在NVIDIA网站上查看webinars,可以加入实时会话或查看预先录制的会话。下面是一个快速概述,但是我强烈建议您观看网络研讨会,因为它们可以帮助您查看图表并同时进行解释,因此它们确实会有所帮助。

当您在GPU上执行功能(内核)时,它作为线程块的网格执行。


线程是最细粒度的,每个线程在块(threadIdx)中都有一个唯一的标识符,该标识符用于选择要操作的数据。线程可以具有相对大量的寄存器,并且还具有称为本地内存的私有内存区域,用于寄存器文件溢出和任何较大的自动变量。
块是一组批处理在一起执行的线程。这种粒度级别的主要原因是,块中的线程可以通过使用快速共享内存进行通信来进行协作。每个块都有一个唯一的标识符(blockIdx),该标识符与threadIdx一起用于选择数据。
网格是一起执行GPU操作的一组块。


这是逻辑层次结构。您实际上只需要了解逻辑层次结构即可在GPU上实现功能,但是要获得性能,您还需要了解硬件,即SM和SP。

GPU由SM组成,每个SM包含许多SP。当前,每个SM有8个SP,每个GPU有1至30个SM,但是在您变得非常高级之前,实际数量并不是主要问题。

要考虑的性能的第一点是翘曲。扭曲是一组32个线程(例如,如果一个块中有128个线程,则线程0-31将在一个线程束中,线程32-63将在另一个线程中,依此类推。由于一些原因,线程束非常重要,最重要的是:


线程束中的线程绑定在一起,如果线程束中的一个线程在if-else块的“ if”侧下降,而其他线程在“ else”线下降,那么实际上所有32个线程都将在两侧下降。从功能上来说没有问题,那些不应该进入分支的线程将被禁用,因此您将始终获得正确的结果,但是如果双方都很长,那么性能损失就很重要。
经线内的线程(实际上是半经线,但是如果您将它正确地用于经线,那么下一代也很安全)一起从内存中获取数据,因此,如果可以确保所有线程都在同一线程内获取数据“段”,那么您将只支付一笔内存交易,如果它们全部从随机地址获取,则您将支付32笔内存交易。有关详细信息,请参见Advanced CUDA C演示文稿,但前提是准备就绪!
扭曲内的线程(在当前的GPU上仍为半扭曲)一起访问共享内存,如果您不小心,则将出现“库冲突”,线程必须在彼此之间排队以访问内存。


因此,在了解了扭曲之后,最后一点就是如何将块和网格映射到GPU。

每个块将从一个SM开始,并将一直保留在那里直到完成。一旦完成,它将退出,并且可以在SM上启动另一个块。正是这种动态调度为GPU提供了可扩展性-如果您有一个SM,则所有块都在一个大队列中的同一SM上运行;如果您有30个SM,则将在各个SM之间动态调度这些块。因此,您应该确保在启动GPU功能时,网格由大量块(至少数百个)组成,以确保其可在任何GPU上扩展。

最后一点是,SM可以在任何给定时间执行多个块。这就解释了为什么一个SM可以处理768个线程(或在某些GPU中更多),而一个块最多只能处理512个线程(当前)。本质上,如果SM具有可用资源(寄存器和共享内存),则它将占用其他块(最多8个)。 “占用计算器”电子表格(包含在SDK中)将帮助您确定随时可以执行多少个块。

抱歉,您不能进行脑筋急转弯,请观看网络研讨会-会更轻松!

关于cuda - 帮助我了解CUDA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com