Chinese, Simplified subtitles

← cs344 unit3 11b_s_使用全局和共享内存执行归约

Get Embed Code
2 Languages

Showing Revision 2 created 05/07/2013 by Michael Xiao.

  1. 那么答案是3。
  2. 所以在此,我将演示一下全局版本所需的内存流量。
  3. 在此,我我将演示一下共享版本所需的内存流量。
  4. 我将用红色演示所有你要做的读取,用蓝色表示所有你要做的写入。
  5. 如果你把这一系列加起来,你就会发现减少了n 个值,在共享内存中
  6. 你将读取n次,写入1次, 但是在全局内存,
    你要读取2n 次,写入n次。
  7. 所以你希望,它能够运行得更快,事实也会如此,
    那让我们现在一起来演示一下。
  8. 所以,现在我正在运行共享内存的版本。
  9. 而且,我们看到它事实上运行得更快了。
  10. 现在我们缩短到464微秒,而不是651微秒。
  11. 但是它并没有快3倍。为什么这样呢?
  12. 哦,详细的原因是我们没有让内存系统饱和。
  13. 而且,有很多更好的技术你可以使用
  14. 来完全最大化归约的性能。
  15. 我们今天不演示这个了,但是如果你真的对此类微优化感兴趣,
  16. 这个程序是最好的起点。
  17. 你想具体看看每个线程处理多个项目而不是1个的情况。
  18. 你也可能希望运行归约的第一步
  19. 正好是你把这些项目从全局内存读入共享内存的时候。
  20. 你也想充分利用这一情况,当你执行归约的最后几步时。
  21. warp线程组是同步的。
  22. 但是这些都是高级技巧。
  23. 如果你感兴趣我们可以在论坛上探讨它们。