Russian subtitles

← Writing Efficient Programs - Intro to Parallel Programming

Get Embed Code
4 Languages

Showing Revision 1 created 12/10/2016 by Алексей Горячих.

  1. В следующей домашней работе мы будем реализовывать метод размытия изображения.
  2. Вы знаете достаточно для того чтобы реализовать такую программу
  3. на GPU, вы бы получили корректную программу и она была бы достаточно быстрой.
  4. Но мы можем сделать еще лучше.
  5. Сейчас у нас есть все необходимое чтобы начать обсуждать написание эффективных параллельных программ в CUDA.
  6. Сейчас я расскажу он высокоуровневых стратегиях.
  7. У нас будет отдельная глава об детальном подходе к оптимизации
  8. для того чтобы помочь вам выжать максимальную производительность из GPU.
  9. Так что считайте это анонсом который освещает действительно важные темы которые вы
  10. должны держать в уме когда пишите GPU программу.
  11. И первое это то что GPU имеют невероятную вычислительную мощь.
  12. Современный GPU может делать более 3 триллионов математических операций в секунду.
  13. Иногда это могут записывать как терафлопс.
  14. флопс (flops) - это число операций с плавающей запятой в секунду (floating Point Operation Per Second).
  15. Современные GPU могут делать более 3 триллионов таких операций каждую секунду, терафлопс.
  16. Но вся это мощь будет впустую если арифметические блоки которые делают вычисления
  17. будут должны потратить свое время ожидая пока система загрузит операнд из памяти.
  18. И первая стратегия которой следует придерживаться это максимизация интенсивности арифметики.
  19. Интенсивность арифметики это по сути количество вычислений по отношению к доступам к памяти.
  20. Мы можем увеличить интенсивность арифметики сделав числитель больше
  21. или знаменатель меньше.
  22. Это соответствует максимизации работы каждого thread'а или минимизации памяти для thread'а.
  23. Поясним, что именно мы под этим имеем.
  24. На самом деле мы говорим здесь о максимизации количества
  25. полезных вычислительных операций на thread'е.
  26. Нас интересует здесь минимизация времени потраченного на память каждым thread'ом.
  27. Я сформулировал это именно так, потому что это не общее число операций с памятью
  28. и это не объем памяти который
  29. используется thread'ом во время исполнения программы.
  30. Это как много времени занимает,
  31. есть много способов уменьшить время доступов к памяти.
  32. И об этом мы поговорим далее.