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)
floating-point
Ol 'niezawodny
źródło
źródło
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:
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ę.
źródło
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 ).
źródło