Я запускаю моделирование молекулярной динамики (MD), используя несколько программных пакетов, таких как Gromacs и DL_POLY.
Gromacs теперь поддерживает как алгоритмы разложения частиц, так и разложения доменов. По умолчанию в моделированиях Gromacs используется декомпозиция домена, хотя в течение многих лет, до недавнего времени, декомпозиция частиц была единственным методом, реализованным в Gromacs. В одной из работ Gromacs (DOI 10.1002 / jcc.20291) авторы приводят причину своего первоначального выбора разложения частиц:
«Ранним конструктивным решением был выбор работы с разложением частиц, а не с разложением доменов, чтобы распределить работу по процессорам. В последнем случае пространственные домены назначаются процессорам, что позволяет быстро находить пространственных соседей только по локальной связи, но возникают сложности из-за частицы, которые перемещаются через пространственные границы, значительны. Разложение домена является лучшим выбором только тогда, когда линейный размер системы значительно превышает диапазон взаимодействия, что редко имеет место в молекулярной динамике. При разложении частиц каждый процессор вычисляет силы и обновления координат / скорости для заданной доли частиц, используя предварительно вычисленный список соседей, равномерно распределенный по процессорам. возникающее из парного взаимодействия между частицами и, что необходимо для обновления скорости обеих частиц i и j, вычисляется только один раз и передается другим процессорам. Каждый процессор хранит в своей локальной памяти полный набор координат системы, а не ограничивает память только необходимыми координатами. Это проще и экономит накладные расходы на связь, в то время как требование к памяти обычно не является ограничивающим фактором даже для миллионов частиц. Список соседей, с другой стороны, который может содержать до 1000 раз больше частиц, распределен по процессорам. Коммуникация по существу ограничена отправкой координат и сил один раз за раз вокруг кольца процессора. Эти варианты оказались надежными с течением времени и легко применимы к современным кластерам процессоров ».
Что они понимают под «линейным размером системы» в предложении «Разложение домена является лучшим выбором только тогда, когда линейный размер системы значительно превышает диапазон взаимодействия, что редко имеет место в молекулярной динамике»? Из вышеприведенного абзаца я получаю идею о том, что разложение частиц имеет то преимущество, что не нужно иметь дело с частицами, движущимися через доменные границы; скорее, вам просто нужно иметь достаточно памяти для каждого процессора, чтобы сохранить общую конфигурацию системы. Таким образом, разложение частиц выглядит очень благоприятно, тогда как разложение доменов выглядит очень неблагоприятно.
Я уверен, что это очень сложный вопрос (и, вероятно, предмет многих книг), но в основном, если разложение частиц кажется таким благоприятным, зачем кому-то нужно использовать разложение доменов? Является ли декомпозиция домена просто выгодной, если размер системы очень большой (что затрудняет или делает невозможным сохранение общей конфигурации в каждом процессоре)? Исходя из приведенного выше абзаца, я не уверен, почему декомпозиция домена сейчас, совсем недавно, является алгоритмом распараллеливания по умолчанию в Gromacs.
Похоже, что DL_POLY сейчас (версия 4) также использует декомпозицию домена. Из руководства по версии 4:
«Таким образом, разделение данных конгурации основано на расположении атомов в ячейке моделирования, такое геометрическое распределение системных данных является отличительной чертой алгоритмов DD. Обратите внимание, что для эффективной работы этой стратегии смоделировано Система должна обладать достаточно равномерной плотностью, чтобы каждому процессору было выделено почти равную часть данных об атомах (насколько это возможно). При таком подходе вычисление сил и интеграция уравнений движения распределяются (разумно) равномерно между процессорами и в значительной степени может быть вычислен независимо для каждого процессора.Этот метод концептуально прост, хотя сложен для программирования и особенно подходит для крупномасштабных симуляций, где эффективность самая высокая.
...
В случае стратегии DD алгоритм SHAKE (RATTLE) проще, чем для метода реплицированных данных DL_POLY Classic), где требуется глобальное обновление позиций атомов (слияние и сплайсинг). "
Это звучит так, как будто декомпозиция домена хороша, потому что она может быть более эффективной, хотя, возможно, более сложной для реализации.
С другой стороны, в предыдущей версии (DL_POLY Classic) использовалось распараллеливание реплицированных данных, что, по-видимому, является еще одним названием для разложения частиц. Из руководства этой версии:
атомы в моделируемой системе, воспроизводятся на каждом узле обработки). В этой стратегии большинство вычислений сил и интеграция уравнений движения могут быть легко и равномерно распределены между узлами и в значительной степени обрабатываться независимо на каждом узле. Метод относительно прост в программировании и достаточно эффективен. Более того, его можно «свернуть», чтобы очень легко работать на одном процессоре. Однако стратегия может быть дорогостоящей в памяти и иметь большие накладные расходы на связь, но в целом она оказалась успешной в широком спектре приложений.
Этот абзац в целом соответствует первому абзацу в этом вопросе, за исключением того, что в нем говорится, что реплицированные данные / разложение частиц имеют «высокие накладные расходы на связь». Параграф из статьи Gromacs, кажется, говорит об обратном - что разложение частиц предпочтительнее, потому что оно имеет меньшие накладные расходы связи, чем разложение домена.
У тебя есть мысли?