Кіріспе
Charm++ - C++ негізінде жасалған параллельді объектке бағдарланған бағдарламалау парадигмасы және Иллинойс университеті, Урбана-Шампейндегі параллельді бағдарламалау зертханасында әзірленген. Charm++ бағдарламалаушы өнімділігін арттыру мақсатымен, параллель бағдарламаның жоғары деңгейдегі абстракциясын қамтамасыз ету арқылы, сонымен бірге, әр түрлі негізгі аппараттық платформаларда жақсы өнімділікпен қамтамасыз ету үшін жасалған. Charm++ тілінде жазылған бағдарламалар chares деп аталатын бірнеше өзара әрекеттесетін хабарларға негізделген нысандарға бөлінген. Бағдарламашы объектінде әдісті шақырғанда, Charm++ орындалу уақыты жүйесі шақырылған объектке хабарлама жібереді, ол жергілікті процессорда немесе параллель есептеуде қашықтағы процессорда болуы мүмкін. Бұл хабар хабарды асинхронды түрде өңдеу үшін кодты орындауды іске асырады. Шахтар индекстелген жинақтарда, яғни шахтар массиві деп аталады және хабарлар шахтар массиві ішіндегі жеке шахтарға немесе бүкіл шахтар массивіне бір мезгілде жіберілуі мүмкін. Бағдарламадағы элементтер физикалық процессорларға адаптивті орындау уақыты жүйесі арқылы сәйкестендіріледі. Процессорларға шарлардың сәйкестендіруі бағдарламашыға айқын болады, және бұл айқындық бағдарламаны орындау кезінде бағдарламаны орындау кезінде процессорларға шарлардың тағайындалуын динамикалық түрде өзгертуге мүмкіндік береді, мысалы, өлшеуге негізделген жүктемені теңестіру, ақауларға төзімділік, автоматты бақылау нүктелері және қатардағы бағдарламада қолданылатын процессорлар жиынтығын қысқарту және кеңейту мүмкіндігі. Charm++ арқылы іске асырылған қосымшаларға NAMD (молекулалық динамика) және OpenAtom (кванттық химия), ChaNGa және SpECTRE (астрономия), EpiSimdemics (эпидемиология), Cello/Enzo E (адаптивті торды жетілдіру) және ROSS (паралельді дискретті оқиғаларды симуляциялау) кіреді. Бұл қолданбалардың барлығы петамасштабты жүйелерде жүз мың ядроға дейін немесе одан да көпке дейін ұлғайды. Адаптациялық MPI (AMPI) - бұл Charm++ орындау уақытының жүйесінің үстінде Message Passing Interface стандартының іске асырылуы және Charm++ мүмкіндіктерін дәстүрлі MPI бағдарламалау үлгісінде ұсынады. AMPI әрбір MPI процесін Charm++ объектісіне байланған пайдаланушы деңгейіндегі көшірілетін желіге кіріктіреді. Әрбір желіге chare-ді ендіру арқылы AMPI бағдарламалары автоматты түрде Charm++ орындалу уақытының мүмкіндіктерін пайдалана алады. Charm4py Charm++ бағдарламаларын Python-та жазуға мүмкіндік береді, көшірілетін Python объектілерін және асинхронды қашықтан әдісті шақыруды қолдайды.
Адаптациялық МПИ (АМПИ)
Адаптациялық MPI - MPI-нің (MPICH, OpenMPI, MVAPICH және т.б.) іске асырылуы. Charm++ жүйесінің үстінде. Пайдаланушылар бұрыннан бар MPI бағдарламаларын алып, оларды AMPI компиляторлық орамаларын пайдалана отырып қайта құрастыра алады және процесс виртуализациясы, динамикалық жүктемені теңестіру және қатеге төзімділікпен тәжірибе жасай алады. AMPI MPI "ранктарын" пайдаланушы деңгейіндегі желілер ретінде іске асырады (операциялық жүйе процестерінің орнына). Бұл желілер тез контекстке ауысады, сондықтан олардың бірнешеуі бір өзекте хабарлардың болуына байланысты бірге жоспарлануы мүмкін. AMPI қатарлары және олардың иелігіндегі барлық деректер, сонымен қатар, жұмыс уақытында әр түрлі өзектер мен жұмыстың түйіндері бойынша көшіріледі. Бұл жүктемені теңдестіру және бақылау нүктесі / қайта іске қосуға негізделген ақаулық толеранттылығы схемалары үшін пайдалы. AMPI туралы қосымша ақпаратты нұсқаулықтан қараңыз: http://charm. С. Иллинойс штаты. edu/manuals/html/ampi/manual. html- ті