Message Passing Interface (MPI)

MPI - dalsze informacje, rózne języki itd

Cwiczenia laboratoryjne

Postawowe:
  1. Napisać program, gdzie każdy z procesów wypisuje informację który ma numer, ile jest procesów w sumie oraz nazwę procesora na którym działa (MPI_Get_processor_name)
  2. Napisać program ping pong: Procesor A wysyla do procesora B pewna ilosc danych, procesor B odsyla je z powrotem do procesora A
  3. Napisać program o nazwie ring, gdzie N procesów komunikujw się w kółko przesyłając swoj numer. Proces M realizuje następujacy algorytm:
    DANE=MOJNUMER
    AKUMULATOR=0
    
    POWTORZ N razy
    	wyslij DANE do procesu (M+1)%N (prawy sąsiad). 
    	odbierz DANE2 od procesu (M-1)%N (lewy sąsiad)
    	AKUMULATOR=AKUMULATOR+DANE2
            DANE=DANE2
    KONIEC POWTORZ
    
    wypisz AKUMULATOR
    
    
    Każdy proces dodaje otrzymaną liczbę do lokalnego akumulatora. Na koncu kazdy powinien wypisac sume wszystkich numerów procesów. Uwaga na deadlock !

Dodatkowo, dla zainteresowanych MPI:
  1. Zmienic program ring tak, aby przesylana byla struktura danych (integer,double). Kazdy element tej struktury to inna reprezentacja numeru procesu (raz jako integer, raz jako double). Kazdy z procesow powinien policzyc dwie sumy (int i double).
  2. Zmienic program ring tak, aby robil to samo, za pomoca wirtualnej topologii jednowymiarowego torusa.
  3. Zmienic program ring tak, aby robil to samo za pomoca komunikacji kolektywnej.

kzajac [at] agh.edu.pl