Koszty ogólne w superkomputerach

10

Szukam wiarygodnych referencji określających, ile zasobów superkomputery wydają na koordynację, a nie na faktyczną pracę związaną z zadaniami. Zasoby mogą być dostępną mocą obliczeniową, ale nawet waty wydają się być prawidłową jednostką.

Wierzę, że jeden z moich profesorów lub podręczników powiedział kiedyś, że w systemach masowo równoległych, do połowy dostępnej mocy obliczeniowej przeznacza się na koordynację zadania i przekazywanie wiadomości. Niestety nie mogę znaleźć tego odniesienia ani żadnego innego materiału na temat tej proporcji.

Zdaję sobie sprawę, że będzie się to bardzo różnić w zależności od architektury superkomputera, a nowoczesne implementacje prawdopodobnie są pod tym względem bardziej wydajne, więc przegląd tej metryki dla wielu architektur lub ewolucji (przed i po dedykowanym sprzęcie do przekazywania wiadomości) byłby jeszcze lepszy.

Tomas Creemers
źródło
2
Możesz łatwo uzyskać dowolny numer, wybierając odpowiedni komputer, algorytm i implementację.
David Ketcheson

Odpowiedzi:

10

Od dawna ulubionym punktem odniesienia w obliczeniach o wysokiej wydajności jest test porównawczy HPLinpack, który mierzy prędkość systemu komputerowego w operacjach zmiennoprzecinkowych na sekundę, jednocześnie rozwiązując bardzo duży, gęsty, liniowy układ równań. Zakłada się, że rozwiązanie zajmie2)/3)n3)+2)n2) operacje zmiennoprzecinkowe, a tester może się zmieniać n aby osiągnąć maksymalną wydajność.

Miary porównawcze obejmują RPEAK (teoretyczna maksymalna liczba operacji zmiennoprzecinkowych na sekundę dla systemu) i RMAX (maksymalna osiągnięta liczba operacji na sekundę w teście porównawczym HPLinpack).

RPEAK jest typowym ułamkiem RMAX, co wskazuje, że przy tym zadaniu testowym obecne superkomputery mogą osiągnąć znaczną część swojej teoretycznej szczytowej wydajności. Na przykład w rankingach superkomputerów TOP500 z listopada 2015 r. Najszybsza maszyna, Tianhe-2, ma RPEAK = 54,902 petaflopów i RMAX = 33,863 petaflopów.

Jednak test porównawczy HPLinpack jest powszechnie uważany za nie reprezentatywny dla obecnych obciążeń. Wyniki HPlinpack zwykle znacznie zawyżają wydajność superkomputerów w rzeczywistych aplikacjach.

Nowy test porównawczy, zwany HPCG, jest w fazie rozwoju. Ten test porównawczy obejmuje operacje powszechnie wykonywane w iteracyjnych metodach rozwiązywania dużych rzadkich układów równań wynikających z dyskretnych PDE. To obciążenie jest znacznie trudniejsze dla komputerów o wysokiej wydajności. Jest również o wiele bardziej reprezentatywny dla tego, do czego superkomputery są używane w praktyce.

Niektóre wczesne wyniki HPCG pojawiają się w mniej niż 5% RPEAK. Na przykład Tianhe-2 ma RPEAK = 54,902 petaflopów i HPCG w 0,58 petaflopów (patrz odniesienie poniżej do prezentacji na HPCG.)

Testy porównawcze TOP500 HPLinpack można znaleźć na stronie:

http://www.top500.org/

Prezentację na temat HPCG można znaleźć na stronie:

http://www.hpcg-benchmark.org/downloads/isc15/HPCG-ISC15-FINAL-SLIDES_update1.pdf

Strona internetowa HPCG znajduje się pod adresem

http://www.hpcg-benchmark.org/

Brian Borchers
źródło
1
Byłem ciekawy gdzie 2)/3)n3)+2)n2)Spec Flops pochodzi i musiał to sprawdzić. Dla każdego, kto jest ciekawy, liczy się operacja dekompozycji LU z częściowym przestawieniem, tj. Metoda rozwiązania gęstego układu.
Aureliusz
3
To nie wydaje się odpowiadać na pytanie, ponieważ nie mówi nic o przekazywaniu wiadomości.
David Ketcheson
Częściowo odpowiada na pytanie w tym sensie, że te testy porównawcze pokazują, jak skutecznie są używane jednostki zmiennoprzecinkowe - możesz odjąć od jednego, aby dowiedzieć się, ile czasu spędzasz na wszystkim innym, w tym między innymi na przekazywanie wiadomości.
Brian Borchers
6

Szczera odpowiedź brzmi: nie wiemy. Odpowiedź zależy w dużej mierze od tego, co faktycznie jest uruchamiane i od kodu napisanego przez użytkownika. Jak zauważa Brian Borchers, istnieje duża różnica między dwoma testami porównawczymi, w których mamy cały kod i podobno wiemy, co robi ten kod, ale istnieje duża różnica zdań co do reprezentatywności tego kodu w stosunku do tego, co faktycznie robią użytkownicy superkomputerów. Bez szczegółowej analizy kodu źródłowego i ciężkiej instrumentacji prawdziwych kodów na prawdziwych maszynach znalezienie tego stosunku jest prawie niemożliwe. Niektóre projekty zaczynają gromadzić dane, które mogą być w stanie przybliżyć społeczność do odpowiedzi na to pytanie, ale nie zostało to w ogóle rozwiązane.

W rzeczywistości pytanie nie jest nawet jasne. Jeśli na karcie komunikacyjnej węzła klastra znajduje się procesor, którego można używać tylko do komunikacji, jak policzyć czas, przez jaki karta ta spędza bezczynnie na obsłudze komunikacji (ani niczego innego)? Tj. Co liczy się jako „dostępna moc obliczeniowa”? Czy liczymy źle napisane programy, które mają niezoptymalizowane obliczenia i procedury komunikacyjne tak samo jak zoptymalizowane? Co jeśli ktoś użyje w swoim kodzie znanego anty-wzorca, który celowo nie wykorzystuje procesora? Co z kłopotliwie równoległymi programami, które w ogóle się nie komunikują (obiecuję, że uruchamiają się na superkomputerach)?

Nie marnowałbym twojego czasu, próbując skwantyfikować nieszablonową uwagę w książce lub od twojego profesora. Tego rodzaju stwierdzenia mają nam przypominać, że programowanie równoległe jest trudne i ogólnie źle wykonane. Superkomputery również nie są doskonale zaprojektowane do eliminacji lub optymalizacji wszystkich odpadów.

Bill Barth
źródło