Chinese, Simplified subtitles

← CUB编程练习

Get Embed Code
2 Languages

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

  1. 当我运行所有这些,这一个稍快于对角线上的所有这些—
  2. 每块64个线程,每个操作16项。
  3. 要注意的是随着每个线程粒度增加,
  4. 吞吐量一般会增加,对吗?
  5. 所以让线程进行越来越多的串行工作通常是件好事。
  6. 另一方面,如果你有固定大小的图块—
  7. 换句话说,这里的图块是我们扫描的项的总数—
  8. 对于一个固定大小的图块,回报递减。
  9. 随着你接近这个最有效点,改进变得越来越小,
  10. 因为你以每个线程增加的粒度来换取减少的并行度。
  11. 然后它又开始上升,在我对Fermi的测量中,
  12. Fermi是与你在Udacity IDE使用的相同的GPU,
  13. 我获得了32x32,稍低于64个线程、每个16项。
  14. 某一时刻,你到达一个点,无法再使问题大小
  15. 符合单个线程寄存器,然后性能再次掉入悬崖。
  16. 对于我,在Femi上,每个线程64项只在16个线程上运行
  17. 又开始带来相当不好的性能,
  18. 我鼓励你自己试试,多做点试验,
  19. 看看这个矩阵的其余部分什么样。
  20. 如果你感兴趣,到CUB主页查看,看看你还可以做什么。
  21. 例如,有各种各样不同的块扫描。
  22. 有各种各样工作效率和步效率的块扫描,
  23. 所以进行一点试验,看看你可以如何快速地获得扫描吞吐量,
  24. 每个元素扫描你可以少花多么时钟周期。
  25. 我发现有了正确的权衡,
  26. 你的每项扫描的计算代价可以低于1个时钟周期。
  27. 这真是太棒了。
  28. 想想在CPU上运行这个代码,
  29. 你无法真的获得每项扫描低于1个时钟周期。