YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Chinese, Simplified subtitles

← 易于编程

Get Embed Code
3 Languages

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

  1. 部分动机是易于编程。
  2. 与没有动态并行计算相比,它怎么特别让人更容易编写
    具有这些不规则的、
  3. 复杂的控制结构,数据结构的程序呢?
  4. 过去,动态并行计算出现在开普勒上之前,
  5. 开普勒是新的GPU,在过去每当你需要进行一批新工作,
  6. 你必须得回到主控制器CPU,来为你启动这批工作。
  7. 所以如果在我的程序中,我到达一点需要完成矩阵求逆
    或FFT(快速傅氏变换),
  8. 我得暂停我的程序,回到CPU,然后让CPU为我启动
    这项工作,该工作完成,
  9. 返回到CPU,然后CPU得重新启动我的程序。
  10. 实际上,如果我能够把我的程序分成两个部分,
    就在此时我需要完成这额外的并行工作的地方,
  11. 突然,我不是拥有1个平滑的程序,而是程序的2个分段,
  12. 我声明过我得在这两个之间保存数据,
  13. 然后我让CPU参与到管理和引领这项工作。
  14. 突然,借助于动态并行,我能够不中断地
    紧密地进行这项工作。
  15. 如果你想,系统可以为你做所有工作。
    它将省去你的老程序。
  16. 它会为你运行新的FFT,把结果返回给你,
    然后它会在你停止的地方继续运行。
  17. 所以从程序员角度看,我不用每次再在2个地方编程。
  18. 我不用在我执行时再让GPU和CPU紧密联结,
  19. 我不用再管理我的程序中需要启动新工作的那部分。
  20. 我只要有效地把它内联,它就变成更简单直观的程序。
  21. 那棒极了。性能影响如何?
  22. 在CPU和GPU之间跳来跳去总会有性能开销。
  23. 你会有通讯连接PCI总线的延迟。
  24. 你会有相应开销,当关闭你的第一部分程序,
  25. 开启下一部分,恢复你离开的部分。
  26. 所以这些开销被分摊。你可能节省通过总线的数据传输。
  27. 某种程度上,我觉得有些实际比这更重要的是,
  28. 有了GPU,你总是试图让GPU做尽可能多的工作。
  29. 你可以更容易地把你在做的工作
  30. 与还在GPU上进行的其他工作重叠。
  31. 我不需要完全关闭然后启动FFT。我可以
  32. 在其它有用的工作进行的同时内联做所有这些工作。
  33. 这就是同时在不同线程的异步地进行这项工作的能力。
  34. 记得你在GPU上有上千个线程,
  35. 它们可以都进行这个,我的意思是模块化资源,
    它们都可以同时进行这个,
  36. 所以你可以在你正在做的不同工作之间
    得到更简单的重叠,
  37. 这肯定更容易让GPU忙碌,
  38. 而那给你许多提升性能的潜力。