Я виконую моделювання молекулярної динаміки (MD) за допомогою декількох програмних пакетів, таких як Gromacs та DL_POLY.
Gromacs тепер підтримує алгоритми декомпозиції частинок і домен. За замовчуванням у симуляціях Gromacs використовується розкладання домену, хоча протягом багатьох років, до недавнього часу, декомпозиція частинок була єдиним методом, реалізованим у Gromacs. В одній із робіт Gromacs (DOI 10.1002 / jcc.20291) автори наводять причину свого первинного вибору розкладання частинок:
"Раннім дизайнерським рішенням був вибір роботи з розкладанням частинок, а не розкладанням домену для розподілу роботи над процесорами. В останньому випадку просторові домени призначаються процесорам, що дозволяє швидко знаходити просторових сусідів лише за допомогою локальної комунікації, але ускладнення через до частинок, які переміщуються через просторові межі, є значним. Розкладання домену є кращим вибором лише тоді, коли розмір лінійної системи значно перевищує діапазон взаємодії, що рідко трапляється в молекулярній динаміці. При розкладанні частинок кожен процесор обчислює сили та оновлення координат / швидкості. для призначеної фракції частинок, використовуючи попередньо обчислений сусідський список, рівномірно розподілений по процесорам що виникає в результаті парної взаємодії між частинками i та j , яка необхідна для оновлення швидкості обох частинок i та j, обчислюється лише один раз і передається іншим процесорам. Кожен процесор зберігає у своїй локальній пам’яті повний набір координат системи, а не обмеження зберігання потрібними йому координатами. Це простіше і економить комунікаційні витрати, тоді як претензія на пам'ять зазвичай взагалі не є обмежуючим фактором, навіть для мільйонів частинок. З іншого боку, список сусідів, який може містити до 1000 разів більше частинок, розподіляється по процесорам. Зв'язок по суті обмежується надсиланням координат і сил один раз на крок навколо кільця процесора. Цей вибір з часом виявився надійним і легко застосовно до сучасних процесорних кластерів ".
Що вони означають під "розміром лінійної системи" у реченні "Розкладання домену - кращий вибір лише тоді, коли розмір лінійної системи значно перевищує діапазон взаємодії, що рідко має місце у молекулярній динаміці"? З вищевказаного абзацу я розумію, що розкладання частинок має перевагу в тому, що не потрібно мати справу з частинками, що рухаються через межі домену; скоріше, просто потрібно мати достатньо пам'яті для кожного процесора, щоб зберігати загальну конфігурацію системи. Таким чином, розкладання частинок виглядає дуже сприятливо, тоді як розкладання домен виглядає дуже несприятливо.
Я впевнений, що це дуже складне питання (і, мабуть, тема багатьох книг), але в основному, якщо розкладання частинок здається настільки сприятливим, навіщо комусь потрібно використовувати розкладання домену? Чи розкладення домену просто сприятливе, якщо розмір системи дуже великий (ускладнює або неможливо зберігати загальну конфігурацію у кожному процесорі)? Виходячи з цитованого вище абзацу, я не впевнений, чому декомпозиція домену зараз зовсім недавно є алгоритмом паралелізації за замовчуванням у Gromacs.
Здається, що DL_POLY зараз (версія 4) також використовує декомпозицію домену. З посібника версії 4:
"Поділ даних конгрурації таким чином заснований на розташуванні атомів у імітаційній комірці. Таке геометричне розподіл системних даних є ознакою алгоритмів DD. Зауважте, що для того, щоб ця стратегія працювала ефективно, моделювали система повинна мати досить рівномірну щільність, так що кожному процесору виділяється майже рівна частина даних атома (наскільки це можливо). Завдяки такому підходу обчислення сил та інтеграція рівнянь руху розподіляються (розумно) порівну між процесорами і значною мірою їх можна обчислити незалежно на кожному процесорі. Цей метод концептуально простий, хоч і складний у програмі, і особливо підходить для великомасштабного моделювання, де ефективність найвища.
...
У випадку стратегії DD алгоритм SHAKE (RATTLE) простіший, ніж для методу реплікаційних даних DL_POLY Classic), де необхідні глобальні оновлення позицій атомів (злиття та сплайсинг). "
Це робить звуком так, ніби декомпозиція домену хороша, тому що може бути більш ефективною, хоча можливо більш складною для реалізації.
З іншого боку, попередня версія (DL_POLY Classic) використовувала паралелізовані паралельні дані, що, схоже, є іншою назвою для розкладання частинок. З посібника з цієї версії:
Стратегія повторних даних (RD) - один із кількох способів досягнення паралелізації в МД. Його назва походить від реплікації даних конфігурації на кожному вузлі паралельного комп'ютера (тобто масиви, що визначають атомні координати , швидкості v i та сили f i , для всіх Nатоми в змодельованій системі відтворюються на кожному вузлі обробки). У цій стратегії більшість обчислень сил та інтегрування рівнянь руху можна розподілити легко і порівну між вузлами і значною мірою обробляти незалежно на кожному вузлі. Метод порівняно простий у програмі та є досить ефективним. Більше того, дуже просто можна запустити на одному процесорі. Однак стратегія може бути дорогою в пам'яті та мати високі накладні витрати, але загалом вона виявилася успішною у широкому діапазоні застосувань.
Цей параграф, як правило, відповідає першому абзацу в цьому запитанні, за винятком того, що він говорить про те, що повторне розкладання даних / частинок має "високі накладні витрати". Абзац із статті Gromacs, схоже, говорить про зворотне - що розкладання частинок є кращим, оскільки воно має нижчі комунікаційні витрати, ніж розкладання домену.
У вас є думки?