Superkomputerowe bariery

Do wykorzystania możliwości nowych generacji superkomputerów niezbędna jest daleko idąca modyfikacja oprogramowania, a na razie na rynku brakuje odpowiednich narzędzi programistycznych.

Do wykorzystania możliwości nowych generacji superkomputerów niezbędna jest daleko idąca modyfikacja oprogramowania, a na razie na rynku brakuje odpowiednich narzędzi programistycznych.

Dwa razy do roku publikowana jest kolejna lista najszybszych na świecie superkomputerów - Top500. Czasami towarzyszy temu spektakularna informacja o przełamaniu kolejnego progu wydajności, jak poziomu 1 petaflopa w czerwcu br. Próg ten został pokonany przez superkomputer IBM Roadrunner, zainstalowany w ośrodku naukowym Los Alamos National Laboratory. Przy maksymalnej wydajności 1,026 petaflopa zajął on pierwsze miejsce na liście. Teraz przynajmniej kilka lat trzeba będzie czekać na kolejną podobnej klasy sensację - komputery klasy exascale o wydajności 1000 petaflopów.

Proste skalowanie wzrostu wydajności oparte na obecnie istniejących technologiach, architekturach i metodach testowania szybkości obliczeń jest przez ekspertów oceniane krytycznie. Postęp w zwiększaniu wydajności będzie wymagał modyfikacji podstawowych założeń architektury superkomputerów, np. w kierunku systemów hybrydowych wykorzystujących różne procesory i szyny danych zoptymalizowane do wykonywania specjalizowanych operacji. W efekcie niezbędna będzie też zasadnicza zmiana zasad projektowania oprogramowania i narzędzi wspomagających programistów.

Lider nie zawsze najszybszy

Dyrektor centrum superkomputerowego National Center for Atmospheric Research (NCAR) Richard Loft twierdzi, że gdyby wykorzystywał do badań prowadzonych w jego instytucie najwydajniejszy na świecie komputer IBM Roadrunner, to praktyczna wydajność modelowania zmian klimatu nie przewyższałaby 2% wartości maksymalnej, a więc zaledwie 20-30 teraflopów. "Lista Top500 mówi o maksymalnej, absolutnej wydajności superkomputera. Ale nie jest przydatna do oceny jego praktycznej przydatności do prowadzenia konkretnych obliczeń naukowych" - mówi.

Wynika to z tego, że miejsce na liście Top500 jest określane przez wyniki - liczącego dziesiątki lat - testu Linpack, który jest oparty na kodzie napisanym w języku Fortran. Mierzy on szybkość wykonywania zmienno-przecinkowych operacji matematycznych. Test ten nie jest natomiast przystosowany do pomiaru wydajności aplikacji, zwłaszcza takich, które wymagają częstego dostępu do pamięci oraz intensywnej wymiany danych między procesorami. Jednak zarówno dostawcy sprzętu, jak i użytkownicy superkomputerów szukają sławy tak konfigurując swoje maszyny, aby jak najwydajniej obsługiwały Linpack i trudno się temu dziwić. W praktycznych zastosowaniach ważna jest jednak rzeczywista wydajność aplikacji, a nie teoretyczna szybkość superkomputera.

Dla wielu aplikacji biznesowych, np. wyszukiwarek internetowych lub systemów przetwarzania transakcji, wysoka przepustowość wewnętrznej szyny systemowej jest ważniejsza niż wydajność obliczeń zmienno-przecinkowych. Natomiast programy biznesowe często trudno jest tak zmodyfikować, aby generowały jednolite, równoległe strumienie instrukcji. Jeśli są one zbyt niejednorodne, to łatwo może wystąpić sytuacja, że jeden z procesorów zostanie obciążony znacznie większym zadaniem obliczeniowym niż pozostałe i w efekcie okaże się, że te ostatnie muszą bezczynnie czekać, aż wykona on pracę i umożliwi przesłanie kolejnego zestawu zadań. Z punktu widzenia użytkownika może to oznaczać wyraźny spadek wydajności systemu. Nie jest on testowany przez Linpack, który przesyła ujednolicone zestawy instrukcji tak, że wszystkie procesory działające w systemie są obciążone prawie tak samo.

Superkomputery hybrydowe

Jednym z już realizowanych pomysłów na zwiększanie wydajności superkomputerów jest odejście od dominujących obecnie konstrukcji wykorzystujących tylko standardowe procesory i szyny danych. Choć krytycznie ocenianym w niektórych zastosowaniach przykładem takiej nowej architektury jest właśnie IBM Roadrunner, który zawiera trzy typy procesorów. Jego podstawowym elementem jest standardowa sieć 3250 węzłów, z których każdy jest obsługiwany przez dwa dwurdzeniowe układy AMD Opteron. Ale rekordowa wydajność w testach Linpack wynika z wykorzystania dodatkowo 13 tys. akceleratorów, układów Cell, które składają się z procesora Power i ośmiu współpracujących z nim jednostek obliczeniowych. Układy Cell są dobrze zoptymalizowane do przetwarzania grafiki i operacji matematycznych, które są głównym elementem aplikacji do obliczeń naukowych.

Procesory te są też dobrze dopasowane do wydajnego przetwarzania programu Linpack. Według testów przeprowadzonych w Los Alamos, wykorzystanie Cell pozwoliło na od 4 do 9 razy zwiększenie wydajności obliczeń w porównaniu do systemu wykorzystującego tylko procesory Opteron. Jednocześnie naukowcy z tego instytutu przyznają, że ich aplikacje będą w praktyce wykorzystywały tylko od 20 do 50% maksymalnej mocy przetwarzania superkomputera, a więc nie więcej niż 500 TFLOP. Dodatkowym kosztem i wadą hybrydowej architektury jest konieczność modyfikacji i optymalizacji oprogramowania. Przykładem może być program symulacyjny Milagro, wykorzystujący metodę Monte Carlo, którego przystosowanie do wymagań maszyny IBM Roadrunner zajęło wiele miesięcy. Choć jednak niezbędne było zmodyfikowanie od 10 do 30% jego kodu, po kilkunastu nieudanych próbach aplikacja zaczęła funkcjonować i okazało się, że działa aż 6-krotnie szybciej niż w systemie bez układów Cell. Tak duże zwiększenie wydajności przetwarzania było kluczowym osiągnięciem, które uznano za potwierdzenie przydatności tego superkomputera.

"Pisząc aplikację dla Roadrunner trzeba w zasadzie tworzyć trzy programy: dla procesorów Opteron, dla układu Power i dla wektorowych jednostek obliczeniowych, które zawiera Cell" - mówi profesor Jack Dongarra z University of Tennessee, jeden ze współtwórców testu Linpack. Wydaje się jednak, że architektury procesorów będą rozwijane w kierunku układów wielordzeniowych wyposażonych w dodatkowe układy specjalizowane. Dla masowych zastosowań najbardziej oczywista jest integracja rdzeni CPU przystosowanych do obliczeń zmiennoprzecinkowych i przetwarzania grafiki.


TOP 200