See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Message Passing Interface - Wikipedia, wolna encyklopedia

Message Passing Interface

Z Wikipedii

Message Passing Interface (MPI) (z ang. Interfejs Transmisji Wiadomości) – standard przesyłania komunikatów pomiędzy procesami programów równoległych działających na jednym lub więcej komputerach. Pierwsza wersja standardu ukazała się w maju 1994 r. Standard MPI implementowany jest najczęściej w postaci bibliotek, z których można korzystać w programach tworzonych w różnych językach programowania, np. Fortran, C, C++, Ada.

Spis treści

[edytuj] Historia

Różne środowiska przesyłania komunikatów dla potrzeb programowania równoległego były projektowane i rozwijane już na początku lat 80. XX wieku. Kilka z nich było budowanych dla specjalnych celów, na przykład dla maszyn takich jak Caltech N-cube. Niektóre były rozwijane dla sieci UNIX – Workstation. Były to między innymi PVM, Argonne's P4 oraz PICL.

Ohio Superkomputer Center opublikował standard przesyłania komunikatów o nazwie LAM. Był to pakiet przygotowany specjalnie dla zastosowań w obliczeniach chemii kwantowej nazwany później TCGMSG. Powstał również wyprodukowany przez tę samą firmę komercyjny pakiet o nazwie Express, przeznaczony dla systemów N-cube.

Ponieważ autorzy tych licznych bibliotek w ramach swoich projektów dublowali podobną funkcjonalność, w październiku 1992 roku, podczas konferencji Supercomputing 92 uczestnicy doszli do porozumienia w sprawie opracowania wspólnego standardu przesyłu komunikatów, skupiającego i wykorzystującego na ile to możliwe wszystkie najlepsze rozwiązania z obecnych środowisk. W tym właśnie momencie narodził się także standard przesyłania komunikatów MPI.

Kilka bibliotek, takich jak ISIS implementowanych przez Cornell University nie odpowiadała nieco stosunkowo sztywnemu modelowi proponowanemu przez uczestników konferencji. Ostatecznie biblioteki oparte na ISIS weszły w skład oprogramowania przeznaczonego dla systemów klastrowych firmy Microsoft, zwanego Wolfpack. ISIS był oparty na idei wirtualnej synchronizacji procesów. Dla zastosowań naukowych bądź komercyjnych biblioteka była nie do przyjęcia, ze względu na duży spadek wydajności spowodowany koniecznością synchronizacji. Tymczasem w przypadku MPI synchronizacja nie była wymogiem krytycznym.

Pierwszy standard MPI nazwany później MPI-1 był gotowy w maju 1994 roku Drugi standard zwany MPI-2 ukończono w 1998 roku. Nie cieszył się on dużą popularnością, ponieważ rok wcześniej opracowano MPICH, w którym zaimplementowano część poprawek wprowadzanych w MPI-2. MPICH i LAM MPI to najczęściej stosowane implementacje standardu MPI.

Powstało też kilka specyficznych odmian MPI przystosowywanych przez producentów superkomputerów specjalnie dla tych maszyn. Firma SGI udostępnia na swoje platformy pakiet MPT (ang. Message Passing Toolkit) implementujący standard MPI.

Od czasu wypuszczenia w 1998 roku standardu MPI-2, wprowadzano w nim jeszcze długo korekty i jego pierwsza zaawansowana implementacja została przedstawiona dopiero w listopadzie 2002 roku.

W standardzie MPI-2 zdefiniowano równoległe operacje wejścia/wyjścia, które pierwotnie zostały zawarte w pakiecie MPI-IO rozwijanym specjalnie na potrzeby NASA, a następnie zmodyfikowane i przeniesione do nowego MPI-2.

[edytuj] Opis

MPI jest specyfikacją biblioteki funkcji opartych na modelu wymiany komunikatów dla potrzeb programowania równoległego. Transfer danych pomiędzy poszczególnymi procesami programu wykonywanymi na procesorach maszyn będących węzłami klastra odbywa się za pośrednictwem sieci.

Program w MPI składa się z niezależnych procesów operujących na różnych danych (MIMD). Każdy proces wykonuje się we własnej przestrzeni adresowej, aczkolwiek wykorzystanie pamięci współdzielonej też jest możliwe.

Główną zaletą standardu jest przenośność. Udostępnia on zbiór precyzyjnie zdefiniowanych metod, które mogą być efektywnie zaimplementowane. Stał się on punktem wyjściowym do stworzenia praktycznego, przenośnego, elastycznego i efektywnego narzędzia do przesyłania komunikatów (ang. message passing). Standard MPI pozwala na jego zastosowanie zarówno w komputerach równoległych, jak i heterogenicznych sieciach stacji roboczych.

Standard nie zabrania, aby poszczególne procesy były wielowątkowe. Nie są też udostępnione mechanizmy związane z rozłożeniem obciążenia pomiędzy poszczególne procesy, z architekturą rozkładu procesorów, z dynamicznym tworzeniem i usuwaniem procesów. Procesy są identyfikowane poprzez ich numer w grupie w zakresie 0 .. groupsize – 1.

[edytuj] Główne własności MPI

  • umożliwia efektywną komunikację bez obciążania procesora operacjami kopiowania pamięci,
  • udostępnia funkcje dla języków C/C++, Fortan oraz Ada,
  • specyfikacja udostępnia hermetyczny interfejs programistyczny, co pozwala na skupienie się na samej komunikacji, bez wnikania w szczegóły implementacji biblioteki i obsługi błędów,
  • definiowany interfejs zbliżony do standardów takich jak: PVM, NX czy Express,
  • udostępnia mechanizmy komunikacji punkt – punkt oraz grupowej,
  • może być używany na wielu platformach, tak równoległych jak i skalarnych, bez większych zmian w sposobie działania.

Zalety MPI

  • dobra efektywność w systemach wieloprocesorowych,
  • dobra dokumentacja,
  • bogata biblioteka funkcji,
  • posiada status public domain,
  • przyjął się jako standard.

Wady MPI

  • statyczna konfiguracja jednostek przetwarzających,
  • statyczna struktura procesów w trakcie realizacji programu (dotyczy to implementacji opartych o MPI-1). Wersja MPI-2 (wspierana np przez LAM 7.0.4) umożliwia dynamiczne zarządzanie strukturą procesów biorących udział w obliczeniach – MPI_Spawn(),
  • brak wielowątkowości.

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -