Диссертация (786409), страница 9
Текст из файла (страница 9)
51 Выводы к главе 1 В главе 1 дана постановка задачи молекулярно-динамического моделирования на графических процессорах. Графические карты имеют собственную архитектуру вычислителей, которые объединяются в блоки и гриды. Изначально они были рассчитаны на обработку видео и вычисления с матрицами. Для выполнения задач общего назначения требуется адаптация математических моделей под многопоточную систему исполнения и разноуровневую систему памяти.
Для этого были рассмотрены возможности ОРУ и возникающие к ним требования при решении задачи молекулярной динамики. В молекулярной динамике наиболее сложной вычислительной операцией является расчет сил, действующих на атом. Для этого выбирается потенциал многочастичного взаимодействия, который учитывает необходимые эффекты.
Простые потенциалы хорошо подходят для вычисления на графических процессорах, но такие потенциалы описывают ограниченный набор свойств наноструктур. Для реализации сложных многочастичных потенциалов необходимо разбить процедуру вычисления на отдельные части таким образом, чтобы задействовать параллельные потоки вычисления и аппаратные функции. Глава 2. Программирование алгоритмов молекулярно- динамического моделирования наносистем на графических процессорах 2.1 Принципы разработки программного обеспечения 2.1.1 Отображение расчетной области на структуру памяти СР11: гибридная модель Особенности доступа к памяти при программировании на ОРБ показаны на рис. 2.1. Рисунок 2.1.
Схема использования памяти СРп' при вычислениях сил в потенциальном поле Для определения действующей на атом результирующей силы, вообще говоря, необходимо рассчитать вклады, вносимые всеми атомами системы. Однако структура большинства потенциалов межчастичного взаимодействия позволяет учитывать не все атомы, а лишь соседние по отношению к рассматриваемому атому. Таким образом, у атома возникает определенный набор соседей, для которых необходимо провести вычисление сил. Здесь можно выделить два основных способа 1511: составлять список соседей или разбить пространство на ячейки. В первом случае с использованием ограничивающих сфер выбираются все соседние частицы, которые вносят вклад в 53 результирующую силу.
При этом необходимо обновлять данный список на каждом шаге и для каждого атома. Согласно второму способу пространство разбивается на ячейки, определяемые ограничивающей функцией (рис. 2.2). В этом случае учитываются дополнительные атомы, которые практически не вносят вклад в результирующую силу. Однако данный подход обладает важным достоинством — конфигурация ячеек известна заранее и не изменяется в процессе моделирования.
Рисунок 22. Ячеистая модель расчетной области, соседние вчейки пронумерованы одним из способов Составление списка по всему набору частиц требует 0(Ф')операций, но применение ячеистой модели уменьшает вычислительную сложность до 0(У). На реализацию такой модели требуется дополнительная память для хранения данных ячеек. Это накладывает основное ограничение на их количество ячеек, так как объем равен произведению. После размещения атомов в ячейках пространства достаточно проверить локальную окрестность ячейки ~'-ой частицы, чтобы выделить необходимые ~'-ые частицы для расчета потенциала. В выражении (1.18) такую выборку необходимо проделывать множество раз, что приводит к перекрестным запросам из массива координат и замедлению.
После выполнения такой операции у каждого атома есть локальный набор в дополнительной памяти, который не приводит к перекрестным запросам. Применительно к распараллеливанию на графических процессорах более эффективным оказывается использование гибридной модели расчетной области. При этом для частиц, находящихся в некоторой ячейке, можно учитывать только взаимодействие с частицами из соседних ячеек. Расчетная область представляется ячейками, атомы размещаются в ячейках. Проводится дополнительная процедура, в которой для ~'-ой частицы проверяется локальная окрестность и составляется список 54 соседних атомов. В дальнейших процедурах используются отдельные списки соседних атомов для вычисления выражений сил взаимодействия.
Совместив два подхода для выбора соседних атомов, удалось достичь сложности вычислений О())() и избавиться от перекрестных запросов памяти. В случае сложного потенциала необходимо рассчитывать угловые и силы кручения. Для этого необходимо зафиксировать атом, его соседний атом и проверять ближайших соседей, которые удовлетворяют формуле плоского и двугранного угла. Это приводит к считыванию данных по одному и тому же адресу несколько раз, что дает коллизии доступа к памяти. Алгоритм изменен так, что в первом проходе по ячейкам фиксируется атом и составляется список его соседей: где питВ1осЬ, питТгеасЬ вЂ” количество вычислительных блоков и потоков, ио)тегйРои — массив сортированных радиус-векторов атомов, сеПЖа)т — массив начальных атомов в ячейках, сеЛЕпй — массив конечных атомов в ячейках, )4итРа)тгс1ез— количество атомов, йлР— массив номеров ближайших соседей, йлгРозг — массив радиус-векторов ближайших соседей. Гибридная модель позволяет эффективно представлять пространство моделирования за счет сочетания ячеистой модели, так как не нужно делать цикл по всем атомам, и техники списков соседей.
На втором этапе используются составленные списки ближайших атомов для вычисления угловых сил и сил кручения: соеГГ«с ошпВ1ос)ся, соттьсеас)я »)((Г1оа14*)яос1ес)Роя, остРасс1с1ея, (Г1оаС4*)Ьоос)еоеГГ, (Г1оас4*) 11яСРоя, 11яс); где ЬопАСоеЯ вЂ” массив коэффициентов связи в потенциале взаимодействия.
Следует отметить, что максимальный размер списка ближайших соседей равен 8, по числу валентных связей атома. Таким образом, размеры массива можно задать перед исполнением, чего требует компилятор видеокарты. У каждого атома есть список номеров ближайших атомов и их координаты, что разрешает коллизии памяти и допускает параллельное исполнение мультипотоков. Для определения соответствия частицы ячейке трехмерные координаты преобразуются хеш-функцией: (2.1) Ь агЬ, = ' Яу Ях+ ' .Ях+ сеПЯге.г ) ~се!1$1ге.у ') ~.се1!Б1ге.х где х;, у;, г; компоненты радиус-вектора г, = г,.
(х, у, г) 1-ой частицы, Ях, Яу — количество ячеек, се1Б1ге.х, сеП51ге.у, се11о1ге.г — размеры ячеек (рис. 2.3). Ях=З Рисунок 2.3. Иллюстрация ячеистой модели Хеш-функция является простой, что позволяет ей быстро выполняться на графических процессорах„и достаточной, чтобы определить близкое расположение атомов в линейном массиве; координаты атомов в трехмерном пространстве преобразуются в линейное расположение. Размер ячейки выбирается по размеру радиуса усечення. Таким образом, для вычисления потенцила требуется проверить лишь соседние ячейки ячеистой модели или соседние диапазоны в массиве данных, отсортированных согласно хеш-значениям. 2.1.2 Реализация потенциала Бреннера второй модификации на СР11 Потенциал межчастичного взаимодействия полностью реализуется на графической карте.
На шаге расчета потенциала выполняется операция: Е' = ХХ~1" Ю-1' Р'"Ю). / го Вызов основного кода выполняется следующей строкой: 56 где питВ7ос7гя, нитТгеааЪ вЂ” количество вычислительных блоков и потоков, юггеггРоя — массив сортированных радиус-векторов атомов, пен р'е1, певАсе1 — массивы вычисляемых на данном шаге скоростей и ускорений, афпг(Ра~йсЫпг(ех — массив индексов частиц после сортировки, питРаг((с1ез — количество атомов, Бопг(СоеЯ"— массив коэффициентов связи в потенциале взаимодействия, йейаТ)те — шаг по времени, юг — массив номеров ближайших соседей, 1гзгРоз~ — массив радиус векторов ближайших соседей, )гег4н(оп — номер шага по времени, ЫФоюе — параметр термостата Нозе-Хувера.
Подготовленная система хранения координат позволяет записывать выражения, входящие в потенциал, в виде математических формул. 2.1.3 Интегрирование и представление разностной схемы На шаге интегрирования выполняется операция: г(~+к|) = г,(1)+м~ м,(г)+ — ы~'а,.(г). (2.3) Данные, необходимые для одного шага одного вычислительного потока, располагаются в глобальной памяти видеокарты (РВАМ), так как нужно хранить большой объем координат, скорости, ускорений всех атомов. Параметры же потенциала копируются в константную память ( сопз1апг ) каждого вычислительного блока (гагр). В программе интегрирование запускается следующей строчкой: гйгпяг::гог еасоф( гпгпяг::таме гтр тгегагог(гьгияг;:таке гпр1е(г( роя4, б че14, а асе14)), ГЬгпяГ::та).е а1р 1Гегасог(ГЬгпяГ::таке Гпр1е(а роя4+пптрагГ1с1ея, с( ее14+питрагГтс1ея, Н асе14+пптрагГ1с1ея)), гпседгаее гипс1ог(бе1Гат1те) ); 57 где Не11аТ~те — шаг интегрирования по времени, с1 рох4 — массив координат атомов, й ~е14 — массив скоростей атомов, й асе14 — массив ускорений атомов, питРаг11с1ея— количество атомов.
Интегрирование осуществляется итератором ~ьг~я~, который автоматически определяет необходимое количество потоков вычисления (йзгеай), ресурсы памяти иоптимальные параметры запуска. Вызов сторонней библиотеки параллельного программирования дает возможность пользоваться постоянно развивающимися прикладными модулями. 2.1.4 Структура данных для параллельного счета Так как число атомов может быть очень большим (до 109), то размещать данные по координатам, скоростям и ускорениям необходимо в глобальной памяти видеокарты.
В процессе вычисления силы способ доступа к памяти является хаотичным. Чтобы упорядочить расположение блоков, проводится сортировка атомов. Если данные для вычисления силы, действующие на один атом, попадут в последовательные блоки памяти и не будут блокироваться вычислениями сил других атомов, то считывание данных будет происходить одновременно. Выделение памяти выполняется процедурами СОВА: Координаты атомов располагаются в объектах ОрепОЬ в случае графической работы или в глобальной памяти видеокарты в случае консольной работы. Список соседних атомов копируется в разделяемую память ( впятеро ) каждого вычислительного блока.