Cuda 开普勒体系结构的加载/存储单元(LD/ST)和特殊功能单元(SFU) < NVIDIA声明,在SMX.中存在 32 特殊功能单元(SFUS)和 32 > /Cult/Load /存储单元(LD/ST)。

Cuda 开普勒体系结构的加载/存储单元(LD/ST)和特殊功能单元(SFU) < NVIDIA声明,在SMX.中存在 32 特殊功能单元(SFUS)和 32 > /Cult/Load /存储单元(LD/ST)。,cuda,nvidia,kepler,Cuda,Nvidia,Kepler,SFU用于“快速近似超越运算”。不幸的是,我不明白这是什么意思。另一方面,据说它们只在单一精度下工作。这在K20Xm上仍然正确吗 LD/ST单元显然用于存储和装载。阅读其中一篇论文是否需要内存加载/写入?它们是否也用作单个经纱?换句话说,是否只有一条经线正在书写或阅读 干杯, Andi不要接受这个答案——我们希望有人会来回答你关于双精度超越运算的问题。我只是想谈谈你问题的第二部分,关于LD/ST单位 LD/ST单元显然用于存储和装载 对 阅读其中一篇论文是否需要记忆加载/写入 对 它们是否也用作

SFU用于“快速近似超越运算”。不幸的是,我不明白这是什么意思。另一方面,据说它们只在单一精度下工作。这在K20Xm上仍然正确吗

LD/ST单元显然用于存储和装载。阅读其中一篇论文是否需要内存加载/写入?它们是否也用作单个经纱?换句话说,是否只有一条经线正在书写或阅读

干杯,
Andi

不要接受这个答案——我们希望有人会来回答你关于双精度超越运算的问题。我只是想谈谈你问题的第二部分,关于LD/ST单位

LD/ST单元显然用于存储和装载

阅读其中一篇论文是否需要记忆加载/写入

它们是否也用作单个经纱

是的,warp中的所有活动线程总是在同一时钟周期内发出相同类型的指令。如果该指令是加载或存储,则会将其发送到LD/ST单元。如果线程处于非活动状态(由于循环或条件执行),则相应的LT/ST单元保持空闲

换句话说,是否只有一条经线正在书写或阅读

不,LD/ST单元可以接受每个时钟的一次加载或存储操作,即使内存延迟可能是几百个周期。因此,当一个warp发出load指令时,LD/ST单元将开始检索该数据。warp中依赖于数据的指令在数据到达之前无法发出。在下一个时钟周期中,warp仍可能执行其他独立指令(指令级并行)。甚至其他独立的加载或存储指令。另一个符合调度条件的扭曲也可能在下一个时钟周期中发出另一条加载指令,并且自身进入等待状态(线程级并行)。此时,LD/ST部门正在跟踪两项未决结果。由于缓存和合并,第二个扭曲的数据可能首先到达。当warp的数据到达时,它被分配到指令中指定的寄存器,然后解析特定的数据依赖关系

SFU用于“快速近似超越运算”

SFU计算函数,如
\uuuCOSF()
\uuuEXPF()

另一方面,这里说的是,它们只在单精度下工作,这在K20Xm上仍然正确吗

根据最近的研究,它们仍然只能在单一精度下工作

这是有道理的,因为如果需要双精度,就不太可能使用不准确的数学函数。有关双精度算术优化的建议,请参阅

双精度运算的实现细节可在
/usr/local/cuda-5.5/include/math\u functions\u dbl\u ptx3.h
中找到(或安装cuda工具包的任何地方)。 例如,对于
sin
cos
,它使用Payne-Hanek参数缩减,然后进行泰勒展开(高达14阶)

对于双精度计算,SFU似乎仅用于
\uuuu internal\u fast\u rcp
\uuuu internal\u fast\u rsqrt
,而这反过来又用于
acos
log
cosh
和其他几个函数(请参见
数学函数\u dbl\u ptx3.h
)。因此,大多数时候它们都会暂停,就像LD/ST单元在没有正在进行的内存事务时暂停一样

阅读其中一篇论文是否需要记忆加载/写入

是的,每次访问全局内存

它们是否也用作单个经纱?换句话说,是否只有一条经线正在书写或阅读

单元数仅限制每个周期发出的指令数。即,每个时钟周期可发出32条读取指令,并可返回32条结果

一条指令最多可以读取/写入128个字节,因此如果warp中的每个线程读取4个字节并合并它们,那么整个warp将需要一条加载/存储指令。如果访问未恢复,则应发出更多指令


此外,单位是,这意味着多个读取/存储请求可以由单个单位同时执行。

NVIDIA GPU如何处理双精度超越函数?这是一个有趣的问题,也是我以前从未考虑过的问题。我希望有人能回答。如果不是,我认为我们可以在测量吞吐量和结果中有效位的数量后做出一个很好的猜测。@RogerDahl SFUs仅在单精度上工作,如下所述。它们的硬件实现基于ROM表中使用定点算法的二次插值,如Stuart F.Oberman和Michael Siu一文所述。一种高性能的面积效率多功能内插器。《第17届IEEE计算机算术研讨会论文集》(Cap Cod,美国),第272-279页,2005年7月。这是NJuffa在英伟达论坛前给我的答案,看,好吧,谢谢,如果我理解正确了:当我没有任何精确的超越操作时,这些单元会闲置?有没有其他方法可以利用它们?SFU只支持六种(单精度)操作:sin/cos、exp/log、rcp/rsqrt。它们可用于超验运算,在超验运算中,单精度指令提供了很好的细化近似值(例如,倒数、倒数平方根)。但是对于像正弦和余弦这样的超验函数,如果单一近似没有帮助,您将不会在生成的微码中看到任何SFU指令。豆豆