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