Fermi 架构上的 int2 与 int4 负载
如果需要将两个 int2 从设备内存加载到寄存器,那么两次连续加载 int2 与一次加载 int4 相比会差多少?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如果需要将两个 int2 从设备内存加载到寄存器,那么两次连续加载 int2 与一次加载 int4 相比会差多少?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
这取决于 GPU 和内存访问模式。但是,假设(由于问题中缺乏信息)在计算能力 2.0+ GPU(Fermi GPU)上进行顺序寻址,请参阅 GTC 2010 中 Paulius Micikevicius 的演示文稿。
该幻灯片显示,对于较低的多处理器占用率(每个多处理器的活动线程数较低),int4 可以发挥很大作用超过 int2。对于高入住率来说,差别不大。
然而,正如幻灯片所指出的,“几个独立的较小访问具有相同的效果
作为一个更大的。例如: 4 个 32 位 ~= 1 个 128 位”。因此,如果您需要加载的两个 int2 值是独立的,只需在代码中依次发出两个加载,它应该与执行几乎相同的性能一个 int4,假设如上所述的一致内存访问。
This depends both on the GPU and on your memory access pattern. However, assuming (for lack of information in the question) sequential addressing on a compute capability 2.0+ GPU (Fermi GPU), see slide 27 of this presentation by Paulius Micikevicius from GTC 2010.
The slide shows that for multiprocessor occupancy that is low (low active threads per multiprocessor), int4 can make a big difference over int2. For high occupancy, there is little difference.
HOWEVER, as the slide notes, "Several independent smaller accesses have the same effect
as one larger one. For example: Four 32-bit ~= one 128-bit". So if the two int2 values you need to load are independent, just issue the two loads one after another in your code, and it should be almost the same performance as doing one int4, assuming coherent memory access as mentioned above.