Korzystam z naukowego kodu symulacyjnego w klastrze, który ma węzły zawierające procesor Intel Xeon E5-2630 v3. Klaster używa CentOS 7.2.1511, używam wersji gcc 5.1.0, a asembler to 2.23.52.0.1-55.
Teraz próbowałem uruchomić ten sam kod na stacji roboczej znajomego, która ma dwa procesory Xeon E5-2697 v3. Ma zainstalowany Ubuntu 16.04 LTS. Na tym komputerze mój kod działa 2-2,5 razy wolniej niż na klastrze. Spodziewałem się co najmniej takiej samej wydajności jak w klastrze.
Dziwne jest to, że na stacji roboczej znajomego, spośród 30 zadań, które wykonuję, 2 z nich działają 3 razy szybciej (lub 1,5 razy szybciej niż w klastrze). W systemie są 2x28 wątków, więc pomyślałem, że ma to coś wspólnego, ale mój przyjaciel również wykonuje kilka zadań (w sumie jest ich 32).
Kod zestawu został również porównany w obu systemach i był prawie identyczny, pomimo użycia różnych wersji gcc. Kod nie jest również intensywny we / wy i wykorzystuje tylko ~ 5 MB pamięci RAM.
Co może powodować tak duże różnice w wydajności i co mogę zrobić, aby dowiedzieć się, dlaczego tak się dzieje?
EDYCJA : Również tutaj można znaleźć porównanie wydajności dwóch procesorów. Ponieważ mój kod jest jednowątkowy, ocena jednowątkowa jest tutaj ważniejsza.
źródło