Dlaczego przetwarzanie równoległe?

W ostatnich latach wzrosło zapotrzebowanie na superszybkie komputery mogące przetwarzać ogromne zbiory z danymi. Ich nabywcami są firmy działające w różnych dziedzinach gospodarki.

W ostatnich latach wzrosło zapotrzebowanie na superszybkie komputery mogące przetwarzać ogromne zbiory z danymi. Ich nabywcami są firmy działające w różnych dziedzinach gospodarki.

Na przykład w przemyśle naftowym w wyniku pojedynczego badania sejsmicznego otrzymuje się 100 mld bajtów do przetworzenia. Jeszcze większe ilości danych należy przetworzyć przy prognozach meteorologicznych. Superszybkie komputery są także niezbędne w przemyśle lotniczym. Do numerycznego rozwiązywania problemów elektromagnetyzmu CEM (Computational Electro-Magnetics) potrzebny jest model o 150 tys. niewiadomych. Przebadanie teoretyczne samolotu o szybkości 32000 km/godz. nie jest wykonalne za pomocą tuneli aerodynamicznych, trzeba stosować modelowanie na superkomputerze o mocy obliczeniowej rzędu tera instrukcji zmiennoprzecinkowych na sekundę. Obliczenia w Jet Propulsion Laboratory wymagały wykonania 300 bln operacji zmiennoprzecinkowych (TFLOPS), zapisania blisko 38 GB i odczytania 309 GB danych.

Niestety szybkość pojedynczych procesorów jest ograniczona i niedługo zostanie osiągnięta granica, której nie będzie można przekroczyć przy stosowaniu obecnie istniejących technologii. Zwiększanie częstotliwości zegara przyczynia się do wzrostu zakłóceń radioelektrycznych, a zmniejszanie średnicy połączeń powoduje efekty kwantowe, które sprawiają że zachowanie tranzystorów staje się trudne do przewidzenia.

Systemy wieloprocesorowe

W tej sytuacji idea zastosowania systemów wieloprocesorowych wydaje się być jedynym realnym rozwiązaniem. Można tu zastosować technologię MPP (Massive Parallel Processing), w której w jednym superkomputerze występują setki, tysiące, a nawet dziesiątki tysięcy elementów procesorowych jednego typu, a superkomputery są rozbudowywalne (scalable), czyli ich moc obliczeniowa wzrasta niemal proporcjonalnie do liczby elementów procesorowych. Ta druga cecha jest bardzo istotna dla MPP.

Przytoczona technologia umożliwia budowę superkomputerów o imponującej mocy obliczeniowej rzędu TFLOPS. Jest ona stosunkowo mało znana w Polsce, choć zgodnie z prognozami The Finacial Times pod koniec lat 90. będzie dominować w budowie superkomputerów.

Jedną z barier upowszechniania superkomputerów są ich zawrotne ceny. W tradycyjnych maszynach stosuje się bardzo drogie procesory wektorowe. Superkomputery MPP wykorzystują stosunkowo tanie elementy procesorowe, wymagają jednak bardzo drogich rozwiązań, zapewniających wielką szybkość przesyłania informacji, rzędu 300-6000 MB/s. Powoduje to, że ich ceny są obecnie również bardzo wysokie.

SIMD czy MIMD?

Komputery równoległe dzielą się na synchroniczne i asynchroniczne. Z licznych modeli tych maszyn omówimy jedynie synchroniczne komputery SIMD (single instruction, multiple data - czytaj: simdi), wykonywujące w tym samym czasie tylko jedną instrukcję na wielu danych, a z asynchronicznych model MIMD (czytaj: mimdi), w którym różne procesory wykonują różne instrukcje na wielu danych (multiple instructions, multiple data).

Model SIMD jest nieco łatwiejszy do programowania, ale ma różne wady: jest mniej wydajny niż MIMD. Często występują sytuacje kiedy część procesorów jest nie wykorzystana, bowiem nie mogą wykonywać instrukcji synchronicznie z pozostałymi. Z tego względu wydaje się, że większą przyszłość ma model MIMD. Jednak ze względu na prostotę hardware'u pierwsze superkomputery wykorzystywały model SIMD.

Rozważane tu będą wyłącznie komputery o pamięci rozproszonej (każdy procesor ma własną pamięć), gdyż model o wspólnej pamięci jest stosowany tylko przy niewielkiej liczbie procesorów (do 128). Dotyczy to pamieci fizycznej, gdyż np. firmy Cray, Convex i Intel stosują wspólną pamięć logiczną (o adresach widzianych przez program i różnych od fizycznych), co pozwala na uniknięcie powolnych operacji przekazywania komunikatów (message passing). System w tych maszynach adresuje terabajty pamięci.

Opis niektórych superkomputerów MPP

MP 1. Jedną z prostszych maszyn jest superkomputer MP 1, firmy MasPar, wykonany w 1990 r. Zastosowany model SIMD pozwala na ogromne uproszczenie hardware'u. Procesory wykonują jednocześnie tylko jedną instrukcję, a więc niepotrzebne są liczniki, pamięć instrukcji oraz cała związana z tym logika. Pozwala to na oszczędzenie milionów

bramek i setek milionów bajtów pamięci.

W komputerze zastosowano 32-bitowe procesory RISC (elementy procesorowe PE), wyposażone w 40 32-bitowych rejestrów i sterowane ze wspólnej jednostki kontrolnej. Procesor zawiera 450 tys. tranzystorów. Układy zgrupowane są w pakietach, z których każdy zawiera 1024 procesory. Maksymalna szybkość przy zainstalowaniu 16 tys. procesorów wynosi 26 GIPS, 12 GFLOPS i 550 MFLOPS podwójnej precyzji (64 bity). Nie są to wartości imponujące w porównaniu do 300 GFLOPS, wykonywanych przez superkomputer Paragon XP/S-300 INTEl'a, ale szybkość procesorów jest rzędu 14 MIPS, a częstotliwość zegara wynosi jedynie 14 MHz. Pozwala to uzyskać bardzo mały pobór mocy (1kW) i zapewnia duży margines bezpieczeństwa. Nowa wersja z 1992 r. posiada szybkość 68 GIPS, 6,4 GFLOPS i 2,4 GFLOPS podwójnej precyzji. Wydaje się, że istnieją jeszcze ogromne rezerwy, pozwalające na zwiększenie szybkości o kilka rzędów wielkości. Te dwa typy komputerów wykorzystują model SIMD. Należy zwrócić uwagę, że podawane dla wszystkich komputerów MPP szybkości są w większości przypadków maksymalne, z wyjątkiem 3-ej wersji superkomputera Cray, przewidzianego do produkcji w 1997 r. Nawet niewielka część programów, wykonywana szeregowo spowoduje znaczne obniżenie ich szybkości (Prawo Amdahla).

Paragon XP/S

Jednym z szybszych superkomputerów MPP, produkowanych obecnie, jest wspomniany Paragon XP/S, działający z szybkością 50-300 GFLOPS (64 bit.). Zawiera on 66-1024 węzłów procesorowych (nodes), przy czym w wersjach 100-300 GFLOPS węzły te zawierają po 4 elementy procesorowe. Jako elementy procesorowe zastosowano 64-bitowe procesory i860 XP o mocy obliczeniowej 75 MFLOPS, szybkości zegara 50 MHz, zawierające 2,5 mln tranzystorów.

Superkomputer firmy Thinking Machines CM-5 posiada 32-bitowe procesory o szybkości 128 MFLOPS każdy. Najwolniejsza maszyna CM-5 Scale 3 ma szybkość 4 GFLOPS i zawiera 32 węzły procesorowe. Thinking Machines nie podaje górnej granicy szybkości, która jej zdaniem może dojść do 2 TFLOPS. Jedynym ograniczeniem jest cena.

Firma Cray planuje w br. wyprodukować superkomputer o maksymalnej szybkości 300 GFLOPS, w 1995 r. o szybkości szczytowej 1 TFLOPS, a w 1997 r. o szybkości przeciętnej 1 TFLOPS.

Bardziej ambitne plany ma firma NCUBE, która w przyszłym roku zamierza wyprodukować superkomputer zawierający 65000 procesorów nC3, pracujący z szybkością 6,5 TFLOPS.

Również europejska firma Telmat zamierza w przyszłym roku wyprodukować superkomputer CS-2 o mocy obliczeniowej 1 TFLOPS, wykorzystując procesory Fujitsu o szybkości 200 MFLOPS.

Convex we współpracy z firmą Hewlett-Packard zamierza w 1995 r. wyprodukować superkomputer o mocy obliczeniowej 200 GFLOPS, a w 1997 r. (daty przybliżone) maszynę o szybkości ponad 3 TFLOPS, z 4800 procesorami.

Urządzenia peryferyjne

W większości superkomputerów stosuje się stacje wielodyskowe (disk arrays). Na przykład w superkomputerze CM-5 każdy węzeł pamięci dyskowej zawiera do 8 jednostek 3,5" o całkowitej pojemności 9,6 GB. 384 węzły mają pojemność 3 TB, a szybkość przesyłania wynosi 4 GB/s.

Duża część superkomputerów MPP posiada HiPPI (High Preformance Parallel Interface - wysoko wydajny interfejs równoległy o szybkości 100 MB/s) oraz jest wyposażona w karty Ethernet.

Języki programowania

Istnieje wiele języków równoległych, stosowanych w superkomputerach MPP. Jednym z bardziej udanych jest HPF

(High Perforance Fortran). Pozwala on na proste wykonywanie operacji równoległych. Obiekty danych mogą być wspólne (shared) lub prywatne (private). Rozpatrzmy instrukcję:

COMMON /XXX/ A (131072), B(131072)

CDIRS SHARED A (:BLOCK)

CDIRS SHARED B (:BLOCK)

Rozpoczyna się ona w PE(0), (element procesorowy nr 0) i rozkłada bloki A i B tak, że A(x) i B(x) zawsze będą umieszczone w tych samych PE. Dane będą automatycznie równomiernie rozłożone między wszystkie PE. Dla 128 elementów procesorowych A(1) do A(1024) w PE(0), A(1025) do A(2048) w PE(1), itd. Wynika stąd rozmiar bloku 131072 : 128 = 1024. Wielkość bloku można też specyfikować.

Instrukcja:

DIMENSION A(1024), B(1024), C(1024)

CDIS SHARED A(BLOCK), B(BLOCK)

CDIS SHARED C(BLOCK)

A = B * C

mnoży wszystkie elementy bloku B przez elementy bloku C i rezultat umieszcza w bloku A.

Kompilator tego języka pozwala w niektórych komputerach na takie rozłożenie obciążeń, żeby straty na komunikację były jak najmniejsze, co znacznie przyspiesza szybkość obliczeń. Opracowywane są kompilatory, które automatycznie dokonują konwersji procedur do postaci równoległej po zbadaniu, że nie ma w nich zależności danych. Opracowanie takich "inteligentnych" kompilatorów wymaga wielu lat pracy.

Maszyny MPP wykorzystują jeszcze wiele innych języków jak: MPF, MPL MPC (stosowane w maszynach MP1 i MP2), Fortran 77 i 90, C i C++ równoległy, validated Ada*, Lisp, itp. Wiele z tych języków jest wyposażonych w mniej lub więcej "inteligentne" kompilatory.

Autor jest pracownikiem Instytutu Informatyki Wydziału Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200