Półprzezroczysty hologram dziewczynki wewnątrz cylindra ze ścianami z kabli.

Boska moc superkomputerów

Watson, Mont-Blanc, Isambard, Sunway TaihuLight, Tianhe-2. Co wiadomo o projektowanym Tianhe-3? A także - szczegóły Exascale Computing Project. Opisujemy, jak są zbudowane oraz jak działają najmocniejsze na świecie superkomputery.

Każdy kto choć trochę interesuje się sztuczną inteligencją i uczeniem maszynowym, zapewne słyszał o superkomputerze firmy IBM o nazwie Watson. Watson powstał w 2006 roku i jego pierwszym celem, było odpowiadanie na pytania zadawane w języku naturalnym. Watson stosuje algorytmy łączące przetwarzanie języka naturalnego, wnioskowania automatycznego, wyszukiwania informacji, reprezentacji wiedzy i uczenia maszynowego. W istocie jest to 90 serwerów IBM Power 750 z procesorami Power7 o 2880 rdzeniach i 15 TB pamięci.

Watson zasłynął z prezentacji swych możliwości w amerykańskim teleturnieju „Jeopardy!”, w którym w 2011 roku zajął pierwsze miejsce. Od 2013 jest komercyjnie wykorzystywany we wspomaganiu wyboru terapii raka płuc w Memorial Sloan Kettering Cancer Center. W tej chwili IBM Watson znajduje jeszcze szersze zastosowania w uczeniu maszynowym, w sztucznej inteligencji, w modelowaniu finansowym i wielu różnych inicjatywach rozwojowych oraz badawczych.

IBM Watson – historia wykorzystania niezwykłego rozwiązania sztucznej inteligencji

Pewna analogia do istniejącego superkomputera IBM Watson pojawia się w futurystycznej wizji sztucznej inteligencji opisanej w najnowszej książce Dana Browna pt. „Początek”. SI Browna to… Winston. Tę analogię dokładniej wyjaśnię na końcu artykułu.

Funkcjonalnie Winston jest oparty, przynajmniej częściowo, na superkomputerze MareNostrum zlokalizowanym w BSC (Barcelona Supercomputing Center). MareNostrum mieści się w zdesakralizowanym kościele z XIX w. (Torre Girona), tuż obok politechniki barcelońskiej. Trudno o bardziej niezwykłą dla maszyny obliczeniowej przestrzeń. MareNostrum jest przykładem klasycznej platformy superkomputerowej. To rozwiązanie, które nawet w nadchodzącym powoli świecie komputerów kwantowych, znajdzie swoje zastosowanie we wspieraniu najnowocześniejszych trendów technologicznych w zakresie uczenia maszynowego i sztucznej inteligencji.

Ale najpierw warto trochę usystematyzować informacje i wiedzę o świecie superkomputerów.

Czym są superkomputery?

Współczesny, bardzo dynamiczny rozwój nauki i technologii we wszystkich dyscyplinach wymaga zapewnienia bardzo sprawnych i nowatorskich metod badawczych oraz przetwarzania ogromnej ilości danych, będących wynikiem przeprowadzanych eksperymentów, dotyczących np. danych klimatycznych, sejsmicznych czy demograficznych. Z drugiej zaś strony wiele z eksperymentalnych metod badawczych jest niezwykle kosztownych przy ogromnej niepewności poprawności dobrania parametrów brzegowych dla analizowanego eksperymentu.

Bezcennym narzędziem są superkomputery zapewniające przetwarzanie ogromnej ilości danych w krótkim czasie, a także zapewniającym dostarczenia narzędzi symulujących wiele bardzo złożonych procesów, tak aby ostateczny eksperyment laboratoryjny, czy produkcyjny został w swych wariantach zredukowany do minimum opcji.

Kluczowe wymagania dla tego typu systemów to ogromna moc obliczeniowa, ogromne ilości pamięci zarówno operacyjnej, jak i potrzebnymi do składowania danych, ultranowoczesne magistrale wymiany danych, a także bardzo efektywne mechanizmy zarządzania tymi rozwiązaniami oraz sposobami ich wykorzystania. Superkomputery spełniają te wymagania.

Superkomputery są rozwiązaniami bardzo kosztownymi i generalnie są fundowane przez agencje rządowe dla podległych ośrodków badawczych, w tych krajach, które stawiają na rozwój nauki. Można wręcz mówić o swoistym wyścigu między państwami. W artykule skupimy się na superkomputerach ogólnego zastosowania, a więc takich, na których można praktycznie wykonać wszelkie rodzaje obliczeń, przetwarzań i symulacji.

Superkomputery są bardzo rozbudowanymi rozwiązaniami technologii tzw. High Performance Computingu (HPC), a więc wysokowydajnego przetwarzania komputerowego. Technologia HPC ma wiele cech szczególnych i ktoś, kto się z nią nie spotkał, może nie zdawać sobie sprawy z charakterystycznych cech i oczekiwań jakim te rozwiązania powinny , czy też muszą sprostać.

Dlatego też poniżej przedstawiono pewne kluczowe informacje ułatwiające zrozumienie elementów technologicznych związanych z technologiami HPC oraz superkomputerami.

Bardzo ciekawy i kompletny kurs z podstaw rozwiązań HPC i superkomputerów można znaleźć na stronie Lawrence Livermore National Laboratory. Każde zagadnienie związane z przetwarzaniem danych może być programistycznie zrealizowane na wiele sposobów. Jednak jednym z najważniejszych dla użytkowników elementów jest czas realizacji  przetwarzania danych. Jeżeli przetwarzanie jest realizowane na wielu wątkach równolegle, jego czas będzie ulegał skróceniu.

Ogólna logika koncepcji przetwarzania równoległego

Zatem kluczem do sukcesu jest tu maksymalne rozłożenie przetwarzania na wszystkie możliwe rdzenie procesorów i ich wątki. Takie podejście zapewnia maksymalne skrócenie czasu wykonywania przetwarzania danych. Niestety, zadania jakie są realizowane na danych przez oprogramowanie najczęściej mają ograniczone możliwości zapewnienia równoległości obliczeń. Nie wszystko można przetworzyć równolegle. Najczęściej najpierw trzeba poczekać na wiele obliczeń pośrednich. Część z nich może spowolnić przetwarzanie, ponieważ wszystkie inne operacje muszą czekać na wyniki cząstkowe. Taka jest rzeczywistość – każde oprogramowanie można poprowadzić równolegle, ale w specyficzny dla niego sposób.

Na diagramie poniżej, z lewej strony, widać, że jeśli kod oprogramowania jest trudny do równoległego wykonania, to dokładanie kolejnych węzłów obliczeniowych nic nie da. Przy kodzie, który łatwo podzielić, sprawny programista uzyska na wielu węzłach ogromne przyspieszenie obliczeń.

Realne ograniczenia realnego przetwarzania równoległego

Platformy sprzętowe realizujące obliczenia mogą mieć dwie zasadnicze architektury:

  • architektura z pamięcią współdzieloną
    • procesory współdzielą przestrzeń adresową
    • komunikacja między pamięcią a procesorami opiera się na wewnętrznych magistralach serwera
  • architektura z pamięcią rozproszoną
    • jest to rozwiązanie z zastosowaniem klastra rozproszonego oparte na wielu węzłach przetwarzania
    • w ramach pojedynczego węzła przetwarzania procesor ma bezpośredni dostęp do pamięci własnego węzła, pobiera dane z zewnątrz (innego węzła), przetwarza dane i następnie przekazuje wynik swych obliczeń dalej
    • węzły obliczeniowe komunikują się miedzy sobą poprzez dedykowany system połączeń oraz poprzez specyficzne protokoły wymiany danych.
Podstawowe architektury rozwiązań HPC – pamięć rozproszona, pamięć współdzielona

Wybór architektury platformy przetwarzania zależy od wyboru oprogramowania, jakie będzie na nim pracować. Z reguły są to specyficzne programy modelujące, symulujące i przetwarzające, które często powstały wiele lat temu i zaprojektowane zostały do pracy ze specyficzną architekturą. Często bywa tak, że kod nie jest modyfikowany dla platform bardziej uniwersalnych.

W większości przypadków, oprogramowanie bardzo dobrze funkcjonuje na tańszej architekturze klastrów (z pamięcią rozproszoną). Istnieje też grupa specjalistycznych programów, które zostały dostosowane do platform z pamięcią współdzieloną i wymagają serwerów z 4, 8, a nawet 32 procesorami. Oczywiście te serwery są znacznie droższe od prostych węzłów klastra rozproszonego i mają jednocześnie bardzo ograniczone możliwości rozbudowy.

Istnieją metody symulacji platform z pamięcią współdzieloną na tańszych systemach z pamięcią rozproszoną. Jest to np. rozwiązanie firmy ScaleMP – oprogramowanie vSMP.

Wątki oprogramowania równoległego, które wykonują pewne obliczenia muszą się komunikować ze sobą poprzez wymianę danych w pamięci, a więc poprzez udostępnianie używanej przez siebie pamięci innym procesom, a także poprzez sięganie do obszarów pamięci, które są wykorzystywane przez inne wątki programu.

Dla systemów z pamięcią współdzieloną wykorzystuje się mechanizm zwany OpenMP (Open Multi Processing), natomiast w przypadku rozwiązań z pamięcią rozproszoną stosuje się rozwiązanie zwane MPI (Message Passing Interface).

Oba te sposoby wymagają stosownego podejścia programistycznego, aby zapewnić efektywną wymianę danych między procesami realizowanymi na poszczególnych rdzeniach procesorów.

Elementy wymiany danych między procesami równoległymi w różnych architekturach

Dla platform z pamięcią rozproszoną, która składa się w wielu węzłów obliczeniowych, kluczowym problemem jest zapewnienie jak najszybszego sposobu wymiany danych między procesami, które są najczęściej realizowane na różnych węzłach. Niektóre rodzaje oprogramowania nie wymagają bardzo częstej wymiany danych między węzłami i wtedy mówimy o architekturze połączeń typu Coarse Grain (grubozianiste), inne z kolei wymieniają te dane bardzo intensywnie i wtedy mówimy o architekturze typu Fine Grain (drobnoziarnistej). Najczęściej połączenia między węzłami realizuje się w technologii InfiniBand o szybkości 40 Gbps (QDR), 56 Gbps (FDR), 100 Gbps (EDR) lub 200 Gbps (HDR), ale także w technologii Intel Omni-Path.

Jaki z tym wszystkim związek mają superkomputery?

Otóż superkomputery są bardzo rozbudowanymi architekturami z pamięcią rozproszoną. Są w większości wypadków zbiorem węzłów (nodów) z jednym tylko procesorem, czasem z parą procesorów ogólnego zastosowania uzupełnionych o bardzo wydajne, specjalizowane układy GPU (Graphical Procesor Unit). Jest tu cała gama rozwiązań, o czym więcej będzie w dalszej części materiału.

Przy rozwiązaniu opartym na wielu węzłach przetwarzających, kluczową sprawą jest zapewnienie bardzo efektywnej i bardzo wydajnej infrastruktury połączeń z minimalnymi opóźnieniami. Tu także istnieje wiele różnych realizacji, które bardzo różnią się parametrami wydajnościowymi jakie udaje się uzyskać.

Technologie realizacji połączeń między węzłami dla platform superkomputerów o wielu tysiącach węzłów obliczeniowych są olbrzymim fragmentem wiedzy. Warto wiedzieć, że są one kluczowe dla wydajności całości rozwiązania, gdzie poza wydajnością pojedynczego węzła, o wydajności superkomputera decyduje także szybkość wymiany danych między węzłami.

Inne elementy superkomputerów

Należy mieć świadomość, że rozwiązania HPC, a zwłaszcza superkomputery stanowią bardzo złożone architektury zawierające wiele elementów technologicznych i zarządzających w tym:

  • systemy operacyjne – często linuksowe, ale większości przypadków superkomputerów – inne systemy, unikalne, często specjalizowane bądź silnie modyfikowane na potrzeby danego rozwiązania
  • systemy tzw. deploymentu i zarządzania – zapewniające automatyczne instalacje systemów operacyjnych na bardzo wielu węzłach, zdalne konfiguracje węzłów, monitorowanie ich pracy i działania administracyjne
  • system zarządzania zasobami klastra (Workload Manager) – zapewniający zarządzanie zasobami klastra lub superkomputera, przydzielanie i udostępnianie ich do obliczeń, zarządzanie kolejkami zadań i przydzielanie im zasobów, egzekwowanie polityk współdzielenia zasobów między użytkownikami, rozliczanie wykorzystania itp.
  • biblioteki i kompilatory – dostarczane użytkownikom i programistom, dotyczące samej platformy obliczeniowej oraz wykorzystywanego oprogramowania.
  • równoległy system plików dla potrzeb obliczeń, w tym zasoby skąd dane są pobierane do przetwarzania, a także miejsce składowania danych przetworzonych; jest to z reguły równoległy system typu GPFS lub Lustre, którego struktura i podłączenie do klastra lub superkomputera wymaga starannego projektu w zakresie zapewnienia oczekiwanej przepustowości dostępu i zapisu poprzez dobór zasobów pod zadania metadata (MDS/MDT) oraz zasobów storage (OSS/OST)
  • struktura połączeń węzłów obliczeniowych oraz dostępu do równoległego systemu plików zapewniająca wysoką przepustowość i minimalne opóźnienia; często są to struktury sieci InfiniBand 40, 56, 100 lub 200 Gbps w różnej topologii np. Fat-Tree Nonblocking; dla dużych systemów superkomputerowych są to specjalne, unikatowe rozwiązania np. Fujitsu K Computer – Tofu-2 (6 wymiarowy torus ze skalowaniem do 100 000 węzłów), CRAY Aries Interconncet (Dragonfly Topology).
Sieci połączeń między węzłami na przykładzie Fujitsu Tofu (6D Torus)

Poniżej zaawansowany, kompletny system zarządzania klastrem obliczeniowym na przykładzie pakietu Fujitsu HPC Cluster Suite. Można tu zidentyfikować obsługę wielu niezbędnych zadań dla poprawnego funkcjonowania klastra obliczeniowego i jego zarządzania.

Kompletne środowisko zarządzania klastrem HPC na przykładzie Fujitsu HPC Cluster Suite

Każde rozwiązanie klastra HPC, a zwłaszcza superkomputerów ma analogiczne środowisko zarządzania, często z wieloma komponentami charakterystycznymi dla danej technologii i implementacji.

Dla pewnego przybliżenia skali złożoności rozwiązań superkomputerów przedstawiono poniżej ogólny schemat architektury najszybszego aktualnie komputera na świecie wg listy top500 – chińskiego Sunway TaihuLight.

Ogólna architektura superkomputera na przykładzie systemu Sunway TaihuLight

Sama moc obliczeniowa w postaci węzłów obliczeniowych musi być uzupełniona o wiele dodatkowych elementów z zakresu infrastruktury komunikacyjnej, zasobów macierzy dyskowych z systemami plików oraz o całą bardzo ważną warstwą oprogramowania, bibliotek, zarządzania itd. Dopiero doskonała współpraca wszystkich tych komponentów daje funkcjonujące, pełnowartościowe rozwiązanie systemu przetwarzania, który nazywamy superkomputerem.


Na kolejnej podstronie piszemy m.in. o miarach wydajności procesorów w superkomputerach.