Charm++ (Charm++)
Charm++ — параллельный объектно-ориентированный язык программирования на базе Си++, разработанный в Лаборатории Параллельного Программирования Иллинойсского университета. Charm++ спроектирован с целью повышения эффективности кодирования за счёт высокоуровневых абстракций, и в то же время увеличения производительности на широком разнообразии аппаратных платформ. Программы на языке Charm++ разбиваются на несколько взаимодействующих посредством сообщений объектов, которые называются чарами (chare). Когда программа вызывает метод объекта, система исполнения Charm++ посылает сообщение вызванному объекту, который может обрабатываться на локальном процессоре или на удалённом процессоре при параллельных вычислениях. Это сообщение вызывает исполнение метода внутри чара для асинхронной обработки сообщения.
Чары могут быть объединены в массивы чаров (chare array) и сообщения могут быть посланы индивидуальным чарам из массива и всему массиву чаров одновременно.
Чары отображаются на физические процессоры посредством системы исполнения. Отображение чаров на процессоры прозрачно для программиста, это позволяет системе исполнения динамически направлять чары на разные процессоры во время исполнения, что даёт возможность эффективнее распределять нагрузку и изменять число задействованных процессоров.
Adaptive MPI
[править | править код]Adaptive MPI (AMPI) — реализация стандарта Message Passing Interface поверх системы исполнения Charm++, которая делает доступными средства Charm++ в более традиционной модели программирования MPI. AMPI создаёт обёртку для каждого процесса MPI в виде объекта Charm++.
Применение
[править | править код]- Charm++ применяется в программе молекулярной динамики NAMD.
- en:ChaNGa — программа для моделирования задачи N гравитирующих тел (en:N-body cosmological simulation). Использовалась для самых масштабных попыток смоделировать крупномасштабную структуру вселенной.