Charm++

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Charm++ jest równoległym zorientowanym obiektowo językiem programowania bazującym na C++ i stworzonym w Laboratorum Programowania Równoległego na Uniwersytecie Illinois. Charm++ powstał w celu zwiększenia produktywności programisty poprzez udostępnienie abstrakcji wysokiego poziomu w programowaniu równoległym, przy jednoczesnym zachowaniu wysokiej wydajności dla większości stosowanych platform sprzętowych.

Programy pisane w Charm++ są dekomponowane na wiele sterowanych komunikatami obiektów, zwanych kontenerami (chares). Kiedy programista wywołuje metodę obiektu, system uruchomieniowy Charm++ (Charm++ runtime system) wysyła odpowiednie komunikaty do wywołanych obiektów, które mogą byś przechowywane zarówno na lokalnej jednostce, jak i jednostce zdalnej, będącej w strukturze równoległej. Wysłany komunika uruchamia wykonywanie kodu zawartego w kontenerze w celu asynchronicznego jego przetworzenia.

Kontenery mogą być grupowane w postaci indeksowanych tablic kontenerów (chare arrays), a komunikaty mogą być wysyłane do pojedynczych kontenerów lub do wszystkich znajdujących się w tablicy jednocześnie.

W programie kontenery są kojarzone przez adaptacyjny system uruchomieniowy bezpośrednio z fizycznymi procesorami. Kojarzenie to jest zupełnie transparentne dla programisty co pozwala środowisku na dynamiczne zmiany w przydzielaniu procesorów kontenerom podczas wykonywania programu. To z kolei zapewnia obsługę takich mechanizmów jak measurement-based load balancing, fault tolerance, automatic checkpointing, jak również możliwość zmiany ilości procesorów wykorzystywanych przez program.

Biblioteka wspierająca symulowanie dynamiki molekularnej (dynamika molekularna - molecular dynamics simulation package NAMD) jest zaimplementowana właśnie z użyciem Charm++.

Adaptive MPI (AMPI) jest implementacją standardu Message Passing Interface na czele z Charm++ runtime system i udostępnia jego możliwości dla bardziej tradycyjnego modelu programowania, jakim jest MPI.

AMPI zamyka każdy proces MPI w migrowalnym na poziomie użytkownika wątku, pod postacią obiektu Charm++. Poprzez wbudowanie każdego wątku w kontener, programy AMPI automatycznie zaczynają korzystać z możliwości systemy uruchomieniowego Charm++, po małych, lub nawet bez zmian w oryginalnym programie MPI.

Zobacz też[edytuj | edytuj kod]

Bibliografia[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]