Jak określić liczbę plików FLOP, do których zdolny jest mój komputer

15

Chciałbym określić teoretyczną liczbę operacji FLOP (operacji zmiennoprzecinkowych), jaką może wykonać mój komputer. Czy ktoś mógłby mi z tym pomóc. (Chciałbym porównać mój komputer z niektórymi superkomputerami, aby zorientować się, jaka jest między nimi różnica)

Ol 'niezawodny
źródło

Odpowiedzi:

9

Teoretyczny szczytowy FLOP / s daje: Liczba rdzeni jest łatwa. Teoretycznie średnia częstotliwość powinna uwzględniać pewną ilość Turbo Boost (Intel) lub Turbo Core (AMD), ale częstotliwość robocza ma dobrą dolną granicę. Operacje na cykl zależą od architektury i mogą być trudne do znalezienia (8 dla SandyBridge i IvyBridge, patrz slajd 26 ). Jest to pytanie o przepełnienie stosu , które zawiera liczby dla wielu współczesnych architektur.

Liczba rdzeniŚrednia częstotliwośćOperacje na cykl
Max Hutchinson
źródło
1
Ok, mam 2 rdzenie, Częstotliwość pracy: 1,8 GHz, Intel Turbo Boost Technologia: 3,00 Ghz, nie mogę znaleźć operacji na cykl, oto strona internetowa: ark.intel.com/products/75460/... dzięki
Ol „Niezawodny
Haswell może wykonać 16 DP / cykl. Właśnie dodałem link w treści odpowiedzi do odpowiedzi SO.
Max Hutchinson
Czy to oznacza, że ​​mój komputer może: 2 x 3 000 000 000 Hz x 16 = 96 Giga FLOP?
Ol 'Niezawodny
Oznacza to, że może osiągnąć od 2 * 1,8 GHz * 16 DP = 57,6 GFLOP / s do 96 GFLOP / s, w zależności od rzeczywistej średniej częstotliwości. Jeśli potrzebujesz użyć jednego numeru, 57.6 jest tym bardziej sprawiedliwym, IMO.
Max Hutchinson
2
Stawki FLOP są ogólnie słabą miarą „dobroci” procesora. Zobacz na przykład scicomp.stackexchange.com/questions/114/ ... Możesz zastanowić się nad ograniczeniem kosztów swojego zadania (np. Ograniczenie obliczeniowe vs. ograniczenie pamięci vs. ograniczenie dysku) i skupić się na odpowiednim sprzęcie (system obliczeniowy, system pamięci, operacje we / wy).
Max Hutchinson
4

Musisz znać model i dostawcę procesorów w swoim komputerze. Gdy już to zrobisz, możesz sprawdzić na stronie internetowej dostawcy (lub może na Wikipedii) częstotliwość taktowania, liczbę układów / gniazd, liczbę rdzeni na układ, liczbę operacji zmiennoprzecinkowych na cykl i szerokość wektorową tych operacji . Następnie po prostu pomnożymy.

Weźmy na przykład procesory „Sandy Bridge” Intel Xeon E5-2680 w Stampede, gdzie pracuję. Dane techniczne to:

  • 2,7 GHz
  • 2 układy / węzeł, 8 rdzeni / układ
  • 2 instrukcje wektorowe / cykl
  • 256-bitowe instrukcje AVX (4 równoległe operandy o podwójnej precyzji)

Pomnożenie ich daje 345,6 GF / węzeł lub 2,2 PF dla nieprzyspieszonej części systemu.

Zwykle myślimy w kategoriach operacji podwójnej precyzji (64-bit), ponieważ taka precyzja jest wymagana dla zdecydowanej większości naszych użytkowników, ale możesz powtórzyć obliczenia w kategoriach pojedynczej precyzji, jeśli chcesz. Zwykle zmienia to tylko ostatni czynnik, powiedzmy 8 SP Flops / instrukcja zamiast 4 DP Flops / inst, ale może być bardzo różny od tego. Na przykład starsze układy GPU miały DP tylko około 1/8 stopnia SP. Jeśli kiedykolwiek podasz liczbę dla swojego systemu, powinieneś wyraźnie określić, której użyto, jeśli nie jest to podwójna precyzja, ponieważ ludzie zakładają, że tak było.

Ponadto, jeśli twój układ obsługuje stopione instrukcje wielokrotnego dodawania (FMA) i może to robić z pełną szybkością, to większość ludzi liczy to jako 2 operacje zmiennoprzecinkowe, chociaż licznik wydajności sprzętu może liczyć to tylko jako jedną instrukcję.

Na koniec możesz to zrobić dla wszystkich akceleratorów, które mogą istnieć w twoim systemie (takich jak GPU lub Xeon Phi) i dodać tę wydajność do wydajności procesora, aby uzyskać teoretyczną sumę.

Bill Barth
źródło
Nie wystarczy znać model procesora, trzeba poznać faktyczne częstotliwości pracy
Aksakal 10.04.2014
@Aksakal, w celu analizy teoretycznej, prawdopodobnie wybór częstotliwości nominalnej jest OK. Trudno jest ustalić, na jakiej częstotliwości faktycznie będą pracowały Twoje układy scalone, ponieważ może to zależeć od obciążenia pracą i jakości klimatyzacji.
Bill Barth
2

Rozumiem, że poprosiłeś o teoretyczną wartość, ale ponieważ jest to prawie zawsze niedostępne dla żadnego prawdziwego kodu, nawet LINPACK, możesz chcieć uruchomić (zoptymalizowany) DGEMM dla bardzo dużych matryc. Powodem, dla którego wolę tę metodę, jest ujawnienie niektórych wad niektórych procesorów, które uniemożliwiają im osiągnięcie teoretycznej szczytowej wartości flopa.

Na przykład procesory graficzne NVIDIA obecnie wykonują operacje na liczbach całkowitych i zmiennoprzecinkowych na tym samym potoku. Oznacza to, że teoretyczny szczytowy flop / s można osiągnąć tylko wtedy, gdy nie wykonasz żadnych obliczeń całkowitych . Ponieważ indeksowanie tablic i każda inna forma dostępu do danych wymaga gdzieś całkowitej arytmetyki, żaden kod nie może osiągnąć teoretycznego szczytowego flopa / s na GPU NVIDIA. W większości przypadków górną granicą jest ~ 80%. W przypadku procesorów, które jednocześnie wykonują operacje na liczbach całkowitych i zmiennoprzecinkowych, nie stanowi to problemu.

Na niektórych procesorach wielordzeniowych podobnych do GPU, takich jak Intel Knights Corner i Blue Gene / Q, trudniej jest osiągnąć szczytowy flop / s niż na tradycyjnych procesorach dla podobnych problemów z potokiem (chociaż oba mogą osiągnąć ~ 90% wartości szczytowej w dużych DGEMM co najmniej ).

Jeff
źródło
Dlaczego żaden kod nie może osiągnąć teoretycznego szczytowego flopa / s na GPU NVIDIA?
skytree
Zobacz akapit 2. Wszystko to dotyczyło jednak starszych architektur. Nowsze architektury NVIDIA mogą wykonywać liczby całkowite i zmiennoprzecinkowe jednocześnie i osiągać> 90% wartości szczytowej w dużych DGEMM.
Jeff