Комментировать

Анонс: Использование графических процессоров и технологии CUDA для задач молекулярной динамики

В журнале Вычислительные методы и программирование вышла статья А.С Боярченкова и С.И Поташникова: Использование графических процессоров и технологии CUDA для задач молекулярной динамики. Вот ее аннотация (полные тексты доступны по ссылке):

Рассмотрена параллельная реализация расчета парных межчастичных взаимодействий в методе молекулярной динамики при нулевых граничных условиях на графических процессорах с применением платформы NVIDIA CUDA. Впервые предложена эффективная реализация с использованием третьего закона Ньютона на основе технологии CUDA. Предложены приемы оптимизации кода. На видеокарте NVIDIA GeForce 8800 GTX по сравнению со скалярной версией на процессоре AMD Athlon64 2.1 ГГц достигнуто ускорение до 660 раз для системы из 49152 частиц.

Я бесконечно далек от этой тематики, но из чтения статьи мне показалось, что эффективность (относительно расчетной пиковой производительность) у авторов получилась выше, чем у классиков N-body на CUDA, Харриса и Ниланда (см. GPU Gems 3 или на сайте NVidiaN-Body Simulation).

Вместе с тем, мне кажется несколько удивительным, что при оценке ускорения (660 раз) в качестве второй половинки для сравнения выбран старый процессор и несколько "несравнимая" реализация на нем:

  • GPU-реализация: SIMD и одинарная точность;
  • CPU-реализация: скалярная (это написано явно) и, как я понял, двойная точность.

Если воспользоваться другой оценкой из той же статьи: GPU позволяет на задаче N-body получить ~98% от теоретической эффективности, а CPU - около половины, то мы вправе ожидать на современных процессорах порядка 50 GFLOPS, а на GTX280 - порядка 600, что даст разницу в быстродействии в 12 раз. Тоже немало (учитывая и возможности дешевого масштабирования GPU-систем), но все-таки не 600. И самое интересное тут: что же именно не позволяет CPU получить 100% эффективности: недостаток количества (быстрого) L1-кэша или просто недостаток bandwidh.

Tags: