23-44.doc

(29 KB) Pobierz
23

23. Operacja zbiorowa ,w której dane sa np. sumowane (można wykonac tez inne operacje) po wszystkich procesach a wynik trafia bądź do procesora root (reduce) lub do wszystkich procesorow (allreduce) .

 

24. Powodem tego jest skonczona precyzja . Problem pojawia się gdy dodajemy do siebie liczby zmiennoprzecinkowe bardzo rozniace się rzedami wielkości . Wówczas możliwy jest przypadek ze po dodaniu takich liczb , wynikiem będzie niezmieniona ta duzo wieksza. Dlatego w operacji redukcji wazne będzie wówczas które liczby dodamy do siebie pierwsze .

 

25.

 

26. ? Operacje nieblokujace to dla których nie jest wazny „wynik” dzialania i nie pilnuja prawidlowego zakończenia . Natomiast blokujące to takie jak otwieranie,zamykanie , czytanie ,pisanie do,z pliku , kurwa nie wiem dokladnie J str 7 prezentacja MPI-2 pisze ale niejasno

 

27. Plik jest dzielony na tzw „widoki” czyli w praktyce dany węzeł widzi tylko konkretna czesc pliku , obszary te mogą być rozłączne dla jednego wezła , czyli się rozumie ze wezel może widziec np. kawalek początku i kawalek konca . I dla niego wtedy to jest caly plik , nie musi jawnie przeskakiwac dziur których nie widzi , nawet nie wie o nich. MPI rozdziela widoki pomiedzy węzły , oraz / lub może ukryc pewne jego czesci tak aby żaden wezel ich nie widział .

 

28. Mowimy ze osiagamy spójność sekwencyjna jeśli zbior operacji zachowuje się tak ,jak gdyby były one wykonane szeregowo ,a kazda z nich była atomowa.

 

29. Liczbe odczytanych elementow możemy wydobyc ze statusu za pomoca metody Get_count() .

 

30. Prawo Amdahla zaklada ze ulamek zrównoleglenia F nie zalezy od liczby procesorow , co w praktyce okazuje się nie prawda , ponieważ zwykle przy większej ilości prockow udaje się bardziej zrównoleglić program,

 

31. Stosujemy taktyke odbior-nadanie na nieparzystych , a nadanie-odbior na parzystych .

Czyli :

If(moj_numer % 2 != 0) {

Recv(…);

Send(…);

}

Else {

Send(….);

Rec.(….);

}

 

32. Ich obsluga musi być wlaczona . Biblioteka MPI musi być skompilowana z odpowiednimi opcjami żeby ich obsluga była wlaczona ,domyślnie zwykle jest wylaczona. Musimy także wymusic zgłaszanie wyjątków poprzez funkcje Set_errhandler(MPI::ERRORS_THROW_EXCEPTIONS) aby pojawienie się bledy zwracalo wyjatek , domyślnie zwraca kod bledu.

 

33.Fence() jako funkcja synchronizujaca przygotowuje (zaczyna) i konczy operacje RMA (Remote Memory Access) , sa to operacje jednostronnej komunikacji. Fence() gwarantuje ze opracje na oknie zakończyły się.

 

34. Operacje pakowania stosujemy np. wtedy gdy mamy do przeslania tablice o dużych rozmiarach w której maly odsetek elementow jest niezerowy . Wówczas wszystkie elementy niezerowe gromadzimy w osobnym buforze i przesylamy tylko jego . Rozmiar bufora nie musi mieć dokładnego rozmiaru rownego wielokrotności -- > ilość_elementow_niezerowych * typ_tych_elementow . Może być on nieco wiekszy.

 

35. To jest kurwa posrane , str 28 MPI-2 nie wiem czy będę się tego uczyl wogle ,nie lubie takiej paplaniny

 

36. To ma być pseudokodem ale zapisze tak jak on to pisal , pewnie nie wymaga tego tak dokladnie :

 

Init();

Int bufor[1000];

Mój_numer=Get_rank();

If (wezel #0) rozmiar_okna = 0;

If (wezel #1) rozmiar_okna = 1000;

Okno = Create(bufor,rozmiar_okna,sizeof(int),…);

If(wezel #0) wypełnij_czyms_okno();

Okno.Fence();  //przygotowanie do RMA

If (wezel #0) okno.Put(bufor,1000,MPI::INT,1,0,1000,MPI::INT);

If (wezel #1) // zrob sobie kawe

Okno.Fence();

Okno.Free();

Finalize();

 

37.FAŁSZ

38.PRAWDA

39.FAŁSZ

40.FAŁSZ

41.PRAWDA

42.PRAWDA

43.PRAWDA

44.FAŁSZ

 

 

...
Zgłoś jeśli naruszono regulamin