1 Wªa±ciwo±ci j¦zyka HPF 2 Posta¢ i rodzaje dyrektyw HPF

Transkrypt

1 Wªa±ciwo±ci j¦zyka HPF 2 Posta¢ i rodzaje dyrektyw HPF
1
Wªa±ciwo±ci j¦zyka HPF
• Prostota programowania
• Dotyczy jednego aspektu równolegªo±ci: równolegªo±ci danych. Równole-
gªo±¢ danych:
Wykonywanie tej samej operacji na ró»nych cz¦±ciach zªo»onych struktur danych (zazwyczaj tablice)
Jednow¡tkowo±¢
Globalna przestrze« nazw (niewidoczna komunikacja - wirtualna Shared Memory)
Synchroniczne wykonywanie poszczególnych instrukcji przez wszystkie procesory
• Zrównoleglenie tylko drobnoziarniste (synchronizacja po ka»dej instrukcji)
• Znacz¡ce efekty tylko przy du»ych zadaniach i wielu procesorach
2
Posta¢ i rodzaje dyrektyw HPF
• Dyrektywy zaczynaj¡ si¦ od !HPF$
2.1
Dyrektywa wyrównania tablic
!HPF$ ALIGN tablica1 with tablica2
Umo»liwia jednoczesny przydziaª procesów obu tablic. Ukªada odpowiednio
elementy obu tablic w pami¦ci.
2.2
Dyrektywa DISTRIBUTE
!HPF$ DISTRIBUTE A(BLOCK,*) ONTO P
Przydziela odpowiednio tablice do procesorów. Dla ka»dej wspóªrz¦dnej tablicy mo»liwe s¡ 3 sposoby rozkªadu:
• rzutowanie (nie ma rozkªadu)
• BLOCK(mi ) - rozkªad blokowy, gdzie mi to liczba elementów w spójnym
obszarze wedªug wspóªrz¦dnej i przyporz¡dkowanych temu samemu procesorowi Domy±lnie mi = ni /pi
• CYCLIC(mi ) - rozkªad cykliczny. Domy±lnie (mi = 1)
1
Rysunek 1: Przydziaª do procesorów do dyrektywie DISTRIBUTE
2.3
Dyrektywa INDEPENDENT
• Je±li !HPF$ INDEPENDENT b¦dzie poprzedzaªo p¦tl¦, to kod w niej
zawarty b¦dzie wykonywany równolegle. INDEPENDENT jest naszym
oznaczeniem kodu równolegªego i powstaªo, by pomóc kompilatorowi w
podj¦ciu decyzji, czy kod jest mo»liwy do zrównoleglenia. Dyrektywy
INDEPENDENT mog¡ by¢ zagnie»d»ane.
3
Porównanie przebiegu p¦tli DO, FORALL i INDEPENDENT DO
2
Czyli:
• DO nie jest równolegªe. Liczenie drugiego elementu musiaªo poczeka¢ na
wyliczenie wszystkich instrukcji pierwszego elementu
• FORALL na ka»dym kroku wykonuje obliczenia dla ka»dego elementu i
wymienia informacje wszystkich elementów.
• INDEPENDENT DO wykonuje instrukcje danego poziomu jednocze±nie,
nie czekaj¡c tak jak do na zako«czenie jednego przebiegu p¦tli, »eby rozpocz¡¢ nast¦pny.
4
LINDA
• Rozszerzenie koordynacyjne j¦zyków FORTRAN/C/C++
• Umo»liwia dost¦p do globalnej bazy danych, zwanej przestrzeni¡ komórej
(tuple space), oraz uruchamianie procesów równolegªych
• Rekordy w bazie danych to:
napisy
liczby
tablice liczb
rekordy
• Odczytywanie odbywa si¦ na zasadzie znalezienia elementu, którego odpo-
wiednie pola s¡ zgodne z podanym wzorcem (wirtualna pami¦¢ wspólna)
• Operacje wykonywane za pomoc¡ instrukcji:
in
rd
rdp
out
eval
5
C-LINDA
• Obiekty identykowane za pomoc¡ wyró»nionych pól
• Pozostaªe pola sªu»¡ do wymiany informacji
out, eval - nadawanie warto±ci polu
in, rd - podstawienie warto±ci pola do zmiennej lokalnej
3

Podobne dokumenty