ПРОЕКТИРОВАНИЕ МОДУЛЯ АВТОМАТИЧЕСКОГО РАСПРЕДЕЛЕНИЯ НАГРУЗКИ НА ГРАФИЧЕСКИЙ ПРОЦЕССОР ДЛЯ ВЫЧИСЛИТЕЛЬНОЙ ПОДСИСТЕМЫ ПРОГРАММНОГО КОМПЛЕКСА «MD-SLAG-MELT» - Студенческий научный форум

X Международная студенческая научная конференция Студенческий научный форум - 2018

ПРОЕКТИРОВАНИЕ МОДУЛЯ АВТОМАТИЧЕСКОГО РАСПРЕДЕЛЕНИЯ НАГРУЗКИ НА ГРАФИЧЕСКИЙ ПРОЦЕССОР ДЛЯ ВЫЧИСЛИТЕЛЬНОЙ ПОДСИСТЕМЫ ПРОГРАММНОГО КОМПЛЕКСА «MD-SLAG-MELT»

Филатов А.М. 1, Трунов А.С. 1
1Московский Технический Университет Связи и Информатики
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Унаследованный программный комплекс MD-SLAG-MELT, реализует компьютерные эксперименты над большими объемами данных, он состоит из множества различных программных модулей, реализующих задачи молекулярной динамики. Такие прикладные задачи в процессе решения используют большие массивы данных, и как следствие, требуют больших временных затрат. Для решения данной проблемы были применены методы высокопроизводительных вычислений с использованием графического процессора, являющегося многопроцессорной системой, позволяющей существенно сократить время компьютерного эксперимента.

Одним из модулей системы является подсистема распределенного молекулярно-динамического моделирования. Данная подсистема состоит из приложений, реализующих параллельные расчеты на графическом процессоре с использованием технологии nVidia CUDA, базы данных с результатами проведенных экспериментов и приложения по автоматической балансировке нагрузки на вычислители. Данная подсистема не рационально использует доступные мощности графического процессора, поэтому было необходимо разработать модуль, который позволит автоматически балансировать нагрузку, на доступном пользователю оборудовании. Построенная модель распределенной вычислительной подсистемы представлена на рисунке 1.

Основным компонентом подсистемы распределенного молекулярно-динамического моделирования будет являться приложение по автоматической балансировке нагрузки между доступными вычислителями. Пользователю также дана возможность корректировать нагрузку между вычислителями вручную, задавая самостоятельно нагрузку для каждого вычислителя.

Модель распределения нагрузки основана на проведении запросов к вычислительной системе, с целью получения её параметров, и соотношения доступных возможностей с требованиями пользователя. Запросы производятся с помощью утилиты CudaInfo. Был создан проект, позволяющий проводить эксперименты с вычислениями парных взаимодействий между объектами в системе. На основе полученных данных из утилиты и экспериментальных данных проекта была выстроена модель определения максимально допустимых размеров системы.

Графический процессор позволяет сильно ускорить вычисления над большими массивами объектов. Для составления модели мне понадобились следующие данные относительно современных архитектур графических процессоров.[1-3]

Рисунок 1 – Модель подсистемы распределенных вычислений.

Для каждого мультипроцессора GPU доступно 65536 32-битных регистров. Учитывая, что одновременно на одном мультипроцессоре может выполняться один блок, для устройства GTX 760 параллельно будут рассчитаны 6 блоков по 1024 нити.[4] Для определения количества доступных регистров разделим 65536 на 1024 и получим 64 регистров для каждой нити. Такого количество регистров с запасом хватает для моделирования и дает возможность создавать локальные переменные внутри методов. Таким образом, локальные переменные, создаваемые внутри методов, не потребуют глобальной памяти, что серьезно увеличит скорость моделирования.

На первом этапе накопители рассчитываются независимо друг от друга внутри каждой нити и сохраняются в регистрах или локальной памяти. В результате получаем количество различных накопителей равное количеству нитей. Следующий шаг — это объединение полученных накопителей в блоки через распределенную память каждого блока, так как по архитектуре CUDA нити взаимодействуют друг с другом только в пределах блока и используют для обмена общую память. Последний этап расчета накопителей – объединением полученных значений в блоках в одну переменную в глобальной памяти для дальнейшего использования.[5-7]

Максимальное количество элементов, при условии что одна нить рассчитывать одну частицу равно максимальному количеству блоков в сетке умноженному на максимальное количество нитей в блоке.

В таблице 1 приведены типы и описания переменных, необходимых при расчетах, в вычислительном приложении.

Таблица 1

Переменные, использующиеся в вычислительном приложении

Тип

Кол-во

Вид памяти

Объем памяти

Локальные переменные

6

Регистры

4 байта

Массивы

6

Глобальная память

4 байта

Самым требовательным по памяти методом является метод расчета нового ускорения для всех частиц системы.

Основную часть памяти при моделировании занимают массивы, размер которых равен количеству частиц в системе, соответственно при моделировании системы из 60 миллионов частиц с точностью float потребуется:

= 0.5Gb / 1Gb / 1.5 Gb / 2G и больше, в зависимости от оборудования, данные снимаются утилитой cudaInfo.cu.

Для увеличения размера моделируемой системы можно уменьшить размер резервной памяти, но это не рекомендуется. Зарезервированная память графического процессора уходит на поддержание графического отображения, нехватка памяти GPU может привести к падению графических драйверов, система выдаст предупреждение о возможном риске.

Коэффициент точности можно выставить вручную, сильно влияет на возможный размер моделируемой системы.

Также в реализации проекта и модели были использованы современные алгоритмы для параллельных вычислений, позволяющие приумножить эффективность графического процессора, такие как Reduce, Scan/Sort в реализации HillisSteele.[8-9]

Список использованной литературы.
  1. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. -СПб: BHV, 2002.

  2. NAMD Version CVS-2016-09-22 M. Bhandarkar, A. Bhatele Theoretical and Computational Biophysics Group, Beckman Institute, University of Illinois, 2016.

  3. GROMACS, Emile Apol, RossenApostolov, Herman J.C. Berendsen, The GROMACS development teams at the Royal Institute of Technology and Uppsala University, Sweden, 2016

  4. Трунов А.С., Воронова Л.И., Воронов В.И., Разработка параллельного алгоритма для информационно-исследовательской системы “MD-SLAG-MELT” на основе технологии CUDA. Вестник Нижневартовского

  5. Пилипчак П.Е., Трунов А.С. Параллельный расчет системы N-частиц с использованием технологии MPI и CUDA // Современные наукоемкие технологии. – 2014. – № 5-2. – С. 217-218;

  6. Shane Cook, CUDA Programming, Elsevier Inc. 2013, 591c.

  7. Воронова Л.И., Трунов А.С. Оптимизация параллельного алгоритма подсистемы распределенного молекулярно-динамического моделирования. - Межотраслевая информационная служба, №3, 2011, 12с.

  8. Информационно-аналитические материалы по параллельным вычислениям (http://www.parallel.ru)

  9. UDACITY Parallel Computing on CUDA (Teaching Course) (https://classroom.udacity.com/courses/cs344)

Просмотров работы: 161