Aktualności:

Nasz kanał IRC - Porozmawiaj z nami.

Menu główne
Menu

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.

Pokaż wiadomości Menu

Pokaż wątki - Agbar

#1
Enigma@home / Enigma Optima
16 Marzec 2016, 22:57
Teaser
Witajcie!
Po dłuższej przerwie wróciłem do mojego projektu optymalizacji enigmy. Widzę, że w międzyczasie sesef wydał swoją wersję, na szczęście moja jest szybsza (przynajmniej u mnie).

Trochę historii
W styczniu 2014 miałem wersję która działała zdecydowanie szybciej niż jakakolwiek kompilacja oryginalnego kodu 0.76.2. Poza tym, że mała część zadań zwracała błędy. Do tego na nieszczęście dostałem nową pracę i skończył mi się wolny czas %)

Projekt cały czas czekał na swoją kolej i w tym roku postanowiłem wygospodarować trochę "zasobów" na enigmę. Po czysto technicznych zmianach, jak migracja z Mercuriala (IMO przegrał wojnę z gitem) i przeniesienie z Bitbucket na Github mogłem zacząć odświeżać sobie znajomość kodu :attack:

Aktualny stan
Dość szybko znalazłem błąd, który prawdopodobnie był odpowiedzialny za niepoprawne wyniki sprzed dwóch lat. Wygląda na to, że to był naprawdę prosty błąd. Najwięcej czasu zajęła mi nauka google test (który jest bardzo prosty w użyciu, przynajmniej na tym poziomie, który jest wystarczający).

Szczegóły
Ta optymalizacja ma zaimplementowane 4 ścieżki (wersje):

  • Zoptymalizowaną wersję standardową.
  • Wersję SSSE3 (Intel Core 2+/Merom)
  • Wersję AVX (Sandy Bridge+)
  • Wersję AVX2 (Haswell)

Program wykrywa automatycznie dostępny zestaw instrukcji (CPUID) i wybiera najnowszy.
x86 < SSSE3 < AVX < AVX2

Zoptymalizowana wersja standardowa
Wymagany jest dowolny procesor. Kod został zmodyfikowany m.in. tak, aby symulować w GCC najważniejszą optymalizację, jaką robił kompilator Intela. Dzięki temu szybkość była porównywalna.

Wersja SSSE3
Najlepiej przetestowana. Mam dwa komputery, oba z procesorami Intel i5/i7 (pierwszej generacji). Działa szybko dzięki SIMD w szczególności operacji PSHUFB.

Wersja AVX
Kod źródłowy praktycznie nie różni się od wersji SSSE3, jednak może używać VEX. Nie spodziewam się dużej różnicy, szczególnie, że z VEXem wiąże się kilka pułapek wydajnościowych.1
Ogólnie sprawdzone działanie w SDE
Szybkość nieznana.

Wersja AVX2
Kod praktycznie nie przetestowany. Z tego co przeczytałem przetwarzanie rozszerzone na 256 bitów, ale pamiętam, że nie wiąże się to z dwukrotnym przyspieszeniem dekodowania.

Bardzo szybkie porównanie szybkości
Test jest bardzo prosty, użyłem My old Windows benchmark
Wyniki z Intel i5-M580 (SSSE3).





vanillasesefAgbar
obciążony43.930.737.4
nieobciążony20.313.711.2

Jak widać przy systemie obciążonym w 100% innymi programami jest tylko 15% przyspieszenia w porównaniu do standardowej kompilacji (prawdopodobnie Hyper Threading, enigma używa też relatywnie dużo pamięci cache). Wersja sesefa daje około 30% przyspieszenia.
Odwrotnie wygląda sytuacja przy nieobciążonym systemie: odcinamy 45% czasu działania w porównaniu do 33% u sesefa.

Co dalej?
Nie wiem, czy sesef opublikował kod źródłowy swojej wersji. Powinien, bo enigma jest licencjonowana GNU GPLv2 i wymaga publikacji kodu źródłowego. Jestem ciekawy jakie zmiany wprowadził, z tego co widziałem w zdekompilowanym kodzie musiał znaleźć inne podejście. Właściwie tylko szybko rzuciłem okiem na ten plik i wolałbym nie tracić czasu na reverse engineering. Wydaje mi się, że sesef "żyje" na BOINC Polish National Team. Jeżeli ktoś z Was mógłby go tam zagadnąć, będę wdzięczny.

Skompilowany plik udostępnię, gdy przejdzie mi dostatecznie dużo zadań na E@H. Powinno wystarczyć koło 100, nie chciałbym publikować wersji, która niepotrzebnie będzie zaśmiecać serwer. Co prawda TJM pisał mi kiedyś, że serwer da sobie z tym radę, ale po co go męczyć (już i tak error rate jest 5.6%...)

Pierwszą wersję chciałbym opublikować wewnętrznie dla naszej drużyny, żeby mieć w miarę kontrolowany zbiór użytkowników. Trzeba sprawdzić, jak aplikacja liczy w rzeczywistych warunkach, nie tylko na moich komputerach ;)

Wydaje mi się, że da się ten program przyspieszyć jeszcze o jakieś 10% (w porównaniu do moich aktualnych wyników) więc w sumie działałaby 2 razy szybciej niż standardowa. A jeszcze po dodaniu voodoo od sesefa, kto wie? Może zwracać wynik jeszcze przed rozpoczęciem obliczeń :fright:

Co o tym myślicie? Kto by się zgłosił do przetestowania?




  • Przejście ze zwykłego/starego kodowania instrukcji na kodowanie VEX wiąże się z dość długą karą w cyklach. Problem do rozwiązania, ale możliwe, że skończymy z dwoma plikami: SSSE3 i AVX+
#2
Archiwum / Najmanovich Research Group
10 Listopad 2011, 23:12
Jest nowy projekt:
http://boinc.med.usherbrooke.ca/nrg/

Założyłem team; proszę o odebranie founda.
#3
Archiwum / Wysyłam GPU do szpitala ;( -> GSoD
25 Sierpień 2011, 16:17
Wysyłam moje GPU do szpitala. Późno zdiagnozowane GSoD. Życzcie mi i jej szczęścia ;)
#4
Aqua@home / Koniec AQUA@home
23 Sierpień 2011, 22:57
#5
Nieskategoryzowane / Surveill
22 Lipiec 2011, 22:00
TJM znalazł nowy projekt http://surveill.dei.uc.pt/surveill/
Założyłem team. (Trollu odbierz mi założycielstwo.)

Z opisu wynika, że to jest jakiś heartbeat, a raczej coś zbliżonego.
Artykuł o Surveill@Home na Wiki B@P
#6
Wizytówki / Agbar
18 Lipiec 2011, 20:48




WCG
PrimeGrid
Yoyo


#7
Kończy się regulaminowe ;) 100 dni na projekt TOP10, więc czas zacząć głosowanie na kolejny. Oczywiście nikt nie powiedział, że musi to być inny projekt. (Wiem, wiem: "następuje zmiana").

Ostatnio dało się, również dzięki projektowi miesiąca, zdobyć 11. miejsce; zaczynaliśmy z 14.

Lista do głosowania obejmuje projekty, w których zajmujemy poniżej 10 miejsca1, poza wymienionymi nieaktywnymi (TTBOMK):


  • AndrOINC
  • QMC@Home
  • Orbit@Home
  • UCT Malaria

Z jakiegoś powodu nie mogę ukryć wyników do czasu ogłoszenia...
#8
Ankieta na kolejny projekt TOP10. Dałem możliwość głosowania na 3 projekty, bo mało osób głosuje i inaczej jest duża szansa na remis;)
Dałem też czas na 14 dni, żeby trwała co najmniej do 15 kwietnia, zgodnie z tym co napisał legis1.
Projekty i pozycje z BOINCStats2 w stanie na teraz P-).

Oczywiście bezmyślnie przepisałem wszystkie, w których jesteśmy poniżej 10. miejsca. Dodałem też DNA, którego BS jeszcze nie wyświetla :(

Miłego głosowania :whip:
#9
Oto lista projektów, w których aktualnie jesteśmy poniżej 10 miejsca:


ABC@home20
AndrOINC11
AQUA@home16
BOINC Alpha Test23
BURP31
Chess960@Home21
Climate Prediction12
Collatz Conjecture14
Cosmology@Home12
DNETC@HOME19
Docking@Home 15
DrugDiscovery@Home22
EDGeS@Home18
Einstein@Home14
Gerasim@Home21
GPUGRID25
Hydrogen@Home13
IBERCIVIS31
Leiden Classical22
LHC@Home19
Luxrenderfarm@home15
Magnetism@home15
MindModeling@Home15


NFS@Home12
Orbit@Home11
POEM@HOME17
PrimeGrid17
QMC@Home19
Quake Catcher Network11
Renderfarm.fi25
RNA World11
Rosetta@Home11
RSA Lattice Siever (2.0)16
SETI@Home23
SETI@Home Beta21
SIMAP15
Spinhenge@home18
Sudoku@vtaiwan18
Superlink@Technion24
The Lattice Project29
UCT Malaria31
uFluids11
WEP-M+2 Project13
World Community Grid33
yoyo@home17