gpt4 book ai didi

cuda - GPU中的上下文切换机制是什么?

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

据我所知,GPU在扭曲之间切换以隐藏内存延迟。但是我不知道在哪种情况下翘曲会被消除?例如,如果扭曲执行加载,并且数据已经在缓存中了。那么翘曲被切断还是继续下一个计算?如果有两个连续的加法会怎样?
谢谢

最佳答案

首先,一旦线程块在多处理器(SM)上启动,它的所有扭曲都将驻留,直到它们全部退出内核为止。因此,只有在有足够的寄存器用于该块的所有扭曲时,并且直到有足够的空闲共享内存用于该块,该块才会启动。

因此,翘曲永远不会被“切换出去”-在传统意义上没有翘曲间上下文切换,上下文切换需要将寄存器保存到内存并恢复它们。

但是,SM确实会从所有常驻经纱中选择发布指令。实际上,无论它们是什么类型的指令,无论有多少ILP(指令级并行性),SM都更可能连续发出来自不同翘曲的两条指令,而不是发出来自同一翘曲的两条指令。不这样做会使SM暴露于依赖项停顿。甚至“快速”指令(如加法)也具有非零延迟,因为算术管线长多个周期。例如,在Fermi上,硬件每个周期(峰值)可以发出2条或更多条翘曲指令,并且算术流水线等待时间约为12个周期。因此,您需要运行多个扭曲来隐藏算术延迟,而不仅仅是内存延迟。

通常,翘曲调度的详细信息取决于体系结构,没有公开记录,并且可以保证随时随地更改。 CUDA编程模型独立于调度算法,因此您不应在软件中依赖它。

关于cuda - GPU中的上下文切换机制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6605581/

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