Aktualności:

Nowy polski projekt BOINC - Universe@Home

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

Wiadomości - Agbar

#1
Enigma@home / Enigma Optima
10 Luty 2019, 19:49

  • Na CPU jest łamana inna wiadomość.
  • Używając zoptymalizowanej wersji masz więcej czasu na pozostałe projekty.  :parrrty:
  • Nie wszyscy mają kompatybilne GPU.
  • Nie wszyscy chcą liczyć na GPU. Prąd kosztuje.
  • Lubię programować.
  • Może kiedyś wezmę się za optymalizację GPU. Podejrzewam, że wiele pomysłów z EO da się przenieść na kod GPU.
#2
Enigma@home / Enigma Optima
10 Luty 2019, 12:15
Po długiej przerwie opublikowałem nową wersję (v1.1.1).

Wg moich testów jest szybsza na nowych Intelach. Jak chodzi o AMD przetestowałem tylko na modelu opartym o energooszczędny Jaguar. Reszta AMD też powinna liczyć szybciej, ale nie mam teraz dostępu do żadnej takiej maszyny.
#3
Enigma@home / Enigma Optima
23 Październik 2017, 08:16
Cytat: AXm77 w 22 Październik 2017, 21:32
Jak prawidłowo dopisać apkę dla GPU do twojego app_info?

To właściwie wiedza tajemna :) Teoretycznie jest jakaś dokumentacja, ale pamiętam, że i tak używałem kodu źródłowego BOINC, żeby przygotować pierwszą wersję app_config.

Przygotuję wersję z apkami GPU. (Spodziewałem się, że mnie to czeka  :attack:) Myślę, że może minąć to kilka dni, zanim to zrobię, bo Optimą zajmuję się w wolnym czasie. Do tego czasu pewnie będziesz wolał wrócić do normalnych apek, bo GPU liczy szybciej.

Cytat: kva.pl w 23 Październik 2017, 02:16
Agbar jeszcze bys opublikowal nowa wersje wizytowki  :whistle:
A co jest nie tak z aktualną? :)
#4
Enigma@home / Enigma Optima
22 Październik 2017, 10:50
Opublikowałem wersję 1.1.0 obsługującą zadania Enigma AV.
#5
TJM, z których źródeł budujesz AV? O ile pamiętam VE3NEA zmienił tylko część odpowiedzialną za optymalizację (w sensie numerycznym, hillclimbing.) Przy wprowadzaniu nowej wersji jest okazja poprawić mały defekt w innej części kodu, ale info wolałbym Ci podać na priv.
#6
Enigma@home / Enigma Optima
28 Luty 2017, 14:17
Parę dni temu opublikowałem wersję finalną v1.0.0. Jeżeli używacie wersji beta3 nie ma powodu do aktualizacji (zmiany są kosmetyczne i nie dotyczą np. szybkości działania.)



EDIT
Opublikowałem wersję v1.0.1, która poprawia crash w kodzie AVX2 w v1.0.0. Zbiegiem okoliczności błąd nie pojawił się w żadnej wcześniejszej kompilacji (to znaczy, czekał żeby zaatakować, ale nie miał okazji.)
#7
Enigma@home / Enigma Optima
21 Czerwiec 2016, 08:55
To wygląda na bug w kliencie BOINC, bo to ten program jest odpowiedzialny za uruchamianie zadań. Bez klienta BOINC nie uruchomi się żadne nowe zadanie, bo trzeba np. przydzielić slot. Myślę, że trzeba to zgłosić ekipie BOINC.
#8
Enigma@home / Enigma Optima
08 Maj 2016, 15:52
Myślę, że github jest dostatecznie dobrym miejscem.
#9
Enigma@home / Enigma Optima
06 Maj 2016, 21:47
Opublikowałem nową wersję beta 3.

Wersja przede wszystkim poprawia problem ze starszymi procesorami 32-bitowymi. Teraz wymagany jest przynajmniej Pentium 3 (wg. opcji kompilatora - może ale nie musi działać na starszych maszynach). Poprzednie kompilacje przez niedopatrzenie były skompilowane dla architektury Nocona, przez co wymagały np. SSE2.

Wersję polecam np. dla Argento.
#10
Enigma@home / Enigma Optima
29 Kwiecień 2016, 21:41
Dzięki za odpowiedź.

O hasło do poprzednich wersji wystarczyło poprosić :)

Dzięki za link, niestety serwer już pozbył się próbek z 1. bety. Ale 89 aktualnych zadań też daje jakiś wgląd.

Możliwe, że Twój procesor (Ivy Bridge) tak szybko wykonuje "zwykły" kod, że różnica do SSSE3 wychodzi rzędu 3%. A może po prostu miałeś 32 bitową wersję beta.1?
Teoretycznie wersja podstawowa kodu powinna być wolniejsza od opta sesefa, przynajmniej tego się spodziewam, ale z drugiej strony... kto wie. W gołej wersji uprościłem trochę arytmetykę i kosztem kilku procent większego użycia pamięci zamieniłem mnożenie razy 26 na 32, co można zrealizować przesunięciem. Nawet na Ivy Bridge potencjalna różnica w szybkości jest całkiem spora:

  • Mnożenie *26 można wykonać jedno na cykl i na wynik czeka się 3 cykle
  • Mnożenie *32 można wykonać dwa na cykl i wynik jest dostępny od razu.
Niektóre fragmenty mogą działać nawet kilka razy szybciej! (niestety to bardzo małe fragmenty).

Przejrzałem jeszcze kod, który ustawia odpowiednie funkcje i wygląda OK. Uruchomiłem nawet na emulatorze z różnymi wersjami procków i wygląda, że wykonuje się ten kod, co powinien.
#11
Enigma@home / Enigma Optima
29 Kwiecień 2016, 20:07
Cytat: Peciak w 29 Kwiecień 2016, 17:00
Na moim procku z AVX różnice czasów pomiędzy APPvBETA_1 a APPvBETA_2 praktycznie nie występują (roznica około 1 - 1,5 %) te same warunki liczenia.

A jak w porównaniu z poprzednimi wersjami? Masz ukryte hosty, więc nie mogę sobie obejrzeć loga na serwerze...
Swoją drogą nie spodziewałem się ukrytych hostów, więc w poprzednim poście o rozkładzie ISA brakuje ciemnej materii ;)EDIT: Ukryte hosty nie mają tylko userid.

Właśnie się zorientowałem, że nie poprawiłem nazwy wersji w beta 2. Muszę sobie jakąś check-listę przygotować.
#12
Enigma@home / Enigma Optima
29 Kwiecień 2016, 01:50
Opublikowałem beta 2. Wersja Windows64 nie wykrywała typu procesora i zawsze działał kod bez SSE/AVX2. Nie zrobiłem czystej kompilacji i zostały śmieci po moich zabawach z kodem  :shame:

Ciekawi mnie czemu nikt z testerów tego nie zauważył? :) Bo apka działa jakieś 30% wolniej bez SIMD. No ale sam zauważyłem to po tygodniu dopiero...
#13
Enigma@home / Enigma Optima
23 Kwiecień 2016, 18:04
Decyzja o dołączeniu do oficjalnych binarek projektu należy do TJMa. Jednak mało prawdopodobne, że tak się stanie.

Mogłem wyrazić się niedokładnie. Enigma Optima może być rozpowszechniana z kopią wrappera z projektu Enigma at Home.
#14
Enigma@home / Enigma Optima
22 Kwiecień 2016, 19:36
TJM chętnie zgodził się na redystrybucję wrapperów - dzięki! :p_arr: więc opublikowałem wersję beta.1.


  • Nie jest wymagane hasło. Wersja jest publiczna.
  • Zawiera wrapper. Wystarczy skopiować do folderu projektu.
  • Wersja optimy jest logowana i jest widoczna w logu zadania na serwerze.

#15
Enigma@home / Enigma Optima
16 Kwiecień 2016, 19:03
Gdzieś w międzyczasie przeanalizowałem sobie statystyki hostów projektu. Chciałem określić cele do dalszej pracy.

Najpierw odfiltrowałem nieaktywne hosty, zostawiając te, które mają RAC>200 i kontaktowały się z serwerem w ciągu ostatnich 3 miesięcy.1
Dla każdego CPUID określiłem, typ procesora dzięki CPU-World i zaimplementowany tam zestaw instrukcji.
Ograniczyłem się do "głównej" linii SSE < SSE2 < SSE3 < SSSE3 < SSE4_1 < SSE4_2 < AVX < AVX2. Zupełnie pominąłem SSE4a, bo jest mała liczba takich procesorów itd.
Zresztą zobaczcie sami:2
[smg id=10562 type=preview align=center caption="Enigma Host RAC by SIMD"]

I po pogrupowaniu wg tego co jest zaimplementowane w Optimie:  {SSSE3, AVX, SSE4_1, SSE4_2} są połączone w SSSE3:
[smg id=10563 type=preview align=center caption="Enigma Host RAC by SIMD folded"]

Według mnie wynika z tego, że nie ma się co przejmować starszymi procesorami, bo nawet wielki zysk w jednostkowej szybkości nie przełoży się na wyniki w skali projektu.
To samo z częścią hostów zgrupowaną w NotSupported. Tam są wszystkie ARM i Apple. Te architektury też mają swoje SIMD, ale implementacją mogę się zająć chyba tylko dla sportu, żeby dokładniej zobaczyć jak działają te procesory.




  • Granica ustalona na 1 miesiąc praktycznie nic nie zmienia, a nie chce mi się drugi raz robić screenshotów. Było by 22 hostów mniej.
  • Wyniki są posortowane wg RAC, a nie iops (Integer Operations Per Second) bo RAC lepiej reprezentuje dostępną moc obliczeniową.
#16
Enigma@home / Enigma TYLKO 32 bitowa?
15 Kwiecień 2016, 23:18
Cytat: krzyszp w 26 Maj 2014, 19:57
Jak instalujesz managera z repo, to same się libsy nie dodają?

W Linuksie 64bit manager jest oczywiście 64 bitowy. Idąc dalej platforma zgłaszana przez klienta to x86_64-pc-linux-gnu1. W przeciwieństwie do Windowsa nie ma domyślnie alt_platform, trzeba to skonfigurować przez cc_config.xml dodając do konfiguracji:
<alt_platform>i686-pc-linux-gnu</alt_platform>
Oczywiście trzeba zainstalować 32-bitowe zależności, sposób i nazwa pakietu zależy od dystrybucji.



#17
Enigma@home / Enigma Optima
15 Kwiecień 2016, 23:07
Czekam na odpowiedź od TJM, chciałbym dołączyć wrappery, żeby uprościć instalację.

Poza tym do kolejnej wersji mam już wszystkie poprawki, które są potrzebne: program loguje swoją nazwę i wykrytą wersję procesora (AVX2, SSSE3 itd.) Dobrze, żeby dało się w logu sprawdzić, co za program działał.
Jak tylko TJM zgodzi się na redystrybucję wrapperów, publikuję betę. Myślę, że dwa tygodnie potem będzie można wypchnąć release.

Mam też kilka pomysłów na dalsze przyspieszenie. Najprostsze poprawki powinny być dla AVX2, bo jest kilka funkcji, których jeszcze nie użyłem (np. gather). Napisanie kodu dla AVX512 powinno być proste, ale jeszcze nie ma procesorów, które to wspierają.

BTW. Zrobiłem małą analizę hostów podpiętych pod projekt i wychodzi z niej, że trzeba celować w SSSE3 (połączone z AVX), bo tam jest najwięcej mocy obliczeniowej. Drugie w kolejności jest AVX2. Dorzucę obrazki, tylko mam na drugim komputerze.
#18
Enigma@home / Enigma Optima
14 Kwiecień 2016, 15:07
Wygląda, że działa tak szybko jak poprzednia, więc program wykrył dobrze typ procesora.

Szybkość nie powinna się zmienić - nie zmieniałem kodu, tylko opcje kompilacji - za to dużo łatwiej teraz zainstalować.
#19
Enigma@home / Enigma Optima
14 Kwiecień 2016, 13:58
Opublikowałem nową wersję v1.0.0-alpha.4
Zmiany to:

  • Jedna wersja exe. Program sam wybiera najlepszy dostępny zestaw instrukcji.
  • Gotowy app_config.xml. Wystarczy skopiować do folderu projektu w BOINC.

Z tym kopiowaniem nie jest jeszcze zupełnie prosto. Potrzebny jest jeszcze wrapper, który można pobrać ze strony Enigma@Home. Dla Windows i Linux potrzebny jest wrapper w wersji 5.32. Jak napiszę do TJMa, to może pozwoli zapakować wrapper razem z Optimą.

Pamiętajcie aby w Linuksie poprawnie ustawić uprawnienia.
Np. u mnie w Arch user boinc musi mieć uprawnienie do wykonania aplikacji, więc muszę ustawić:
chusr boinc:boinc enigma-optima
chmod u+x,g+x  enigma-optima

To samo dla wrappera, jeżeli BOINC manager go wywali przez przypadek (np. przy błędnej konfiguracji.)
W Linuksie x64 sprawdźcie też czy macie zainstalowane zależności dla wrappera, który jest 32 bitowy. W Arch trzeba włączyć multilib, ale inne dystrybucje są prostsze w obsłudze  8)



#20
Enigma@home / Enigma Optima
01 Kwiecień 2016, 17:41
Cytat: sknd w 01 Kwiecień 2016, 15:02
a wszystkie WU są tej samej długości?

Domyślam się, że nie. TJM wie lepiej, jak to jest, a może jest gdzieś informacja na forum projektu.
Na moje oko rozmiar zadania można rozpoznać po ilości punktów (30, 52, 60...). Wszystkie 30 powinny mieć tyle samo do policzenia, itd.

Popatrz np. na wyniki:
Cytat: stasieks w 30 Marzec 2016, 14:45
Bez optymalki:
3,628.35    3,449.01    52.00    Enigma 0.76b v5.32
2,074.95    1,989.75    30.00    Enigma 0.76b v5.32

Z optymalizacją:
2,413.87    2,141.13    52.00    Enigma 0.76b Anonymous platform (CPU)
1,590.45    1,206.28    30.00    Enigma 0.76b Anonymous platform (CPU)

Z proporcji
2000/30*52 = ~3460,
1200/30*52 = 2080.

Przypuszczam, że serwer jakoś dopasowuje rozmiar WU do szybkości klienta. Pewnie optymalizuje obciążenie (turnaround time itd.)
#21
Enigma@home / Enigma Optima
01 Kwiecień 2016, 13:12
Ciekawe, masz taki sam procesor jak krzyszp, ale działa trochę szybciej.
#22
Enigma@home / Enigma Optima
29 Marzec 2016, 23:28
Spróbuję coś wyrzeźbić. A może ktoś ma aktualne app_info dla Linuksa?
#23
Enigma@home / Enigma Optima
29 Marzec 2016, 19:31
Sama podmiana pliku wykonywalnego nie jest poprawnym rozwiązaniem (chociaż wielu z Was tego próbuje - widziałem w logach serwera %) )

Musisz mieć plik app_info.xml, Wcześniej pisałem jak zrobić to w Windows:
Cytat: Agbar w 20 Marzec 2016, 18:20
Jak uruchomić optymalkę

Niestety dla Linuksa sprawa może być trochę bardziej skomplikowana, bo TJM daje trochę bardziej złożony plik app_info i nie chciało mi się wcześniej rozgryzać o co tam chodzi.
Spróbuj tak:
1. Pobierz ten plik umieszczony przez TJM na oficjalnym forum.
2. Rozpakuj go do folderu projektu.
3. Podmień plik enigma_0.76_i686-pc-linux-gnu na wybrany plik z release Enigma Optima.

Powinno zadziałać.

#24
Enigma@home / Enigma Optima
27 Marzec 2016, 13:21
Specjalnie dla WUPES zrobiłem wersję dla Win32.

SSSE3 jest praktycznie tak samo szybkie jak na x64.
Wersja generic jest dosyć powolna. Pewnie da się to poprawić, ale nie na razie nie ma dla kogo.

@WUPES nie próbuj wersji AVX2, bo twój procek tego nie obsłuży.
#25
Enigma@home / Enigma Optima
26 Marzec 2016, 21:49
Fajnie, bo oba Twoje procki mają AVX2.
#26
Enigma@home / Enigma Optima
26 Marzec 2016, 19:12
W końcu przygotowałem wersję na Linuksa: alpha 2
Tak jak z Windowsem (alpha.1), na razie są osobne pliki dla zwykłego kodu, SSSE3 i AVX2. Sprawdźcie, czy na pewno wasz procesor jest zgodny z użytym plikiem wykonywalnym, bo możecie skończyć jak kszyszp  ;)

O ile znam Linuksa (a nie znam) pliki są zlinkowane statycznie, więc nie mają żadnych zależności. Sprawdziłem, że działają na Arch i Debianie.

PDH, dzięki za porównanie szybkości. Wygląda, że AVX2 może być ponad dwa razy szybsza od standardowej apki projektu :fright:

Pomijając szybkość, bardzo ważne jest, czy nie ma błędów WU. Na razie nie widziałem żadnego, ale jak wam się zdarzy zgłoście proszę (np. w tym wątku). Powinna wystarczyć nazwa zadania.
#27
Enigma@home / Enigma Optima
23 Marzec 2016, 00:58
Udało mi się zainstalować Arch Linuksa. Po instalacji systemu od zera naprawdę polubiłem ten OS  :arrr:

Mam już nawet skompilowane pliki do wrzucenia na release, tylko muszę to zebrać do kupy. W tym tygodniu mam trochę mniej czasu, więc może mi to zająć nawet ze dwa dni.

Jak idą testy na Windowsach? Czy działa szybciej i jak dużo szybciej?
#28
Enigma@home / Enigma Optima
21 Marzec 2016, 16:59
Cytat: krzyszp w 21 Marzec 2016, 12:38
Xeon E3-1230v2:
186762368 177026030 80842 20 Mar 2016, 22:48:21 UTC 21 Mar 2016, 8:25:39 UTC Completed and validated 2,042.51 1,989.40 60.00 Enigma 0.76b v5.32
Chyba coś się nie udało przy instalacji, bo nie masz anonymous platform w wynikach. Twój host: 80842 ma tylko
CytatEnigma 0.76b 5.32 windows_intelx86
a np. mój 68361 ma dodatkowo
CytatEnigma 0.76b (anonymous platform, CPU)

Może zamieniłeś exe bez restartowania klienta BOINC?
Możesz też podać której wersji użyłeś (zakładam, że SSSE3) i mniej więcej jak długo WU liczyły się na poprzedniej wersji którą miałeś?
#29
Enigma@home / Enigma Optima
21 Marzec 2016, 01:36
Cześć sesef!

Dzięki za zainteresowanie i uwagi.

Cytat: sesef w 20 Marzec 2016, 23:06
Obie wersje, które się pojawiły bazują na kombinacji ustawieniami Intel Compiler-a, sam kod nie był zmieniany poza drobiazgami, które umożliwiły kompilację pod win. Intel Compiler bardzo dobrze potrafi optymalizować dostęp do pamięci stąd tak dobre wyniki niezależnie od tego czy liczymy na obciążonym czy nie komputerze. Natomiast optymalizacja samego kodu jest porównywalna z innymi kompilatorami czy to gcc czy vcc i z doświadczenia najlepiej zawsze wychodził pisany z palca kod na intrinsics-ach.

Jeżeli nie było modyfikacji, to nie ma pomysłów do zaimportowania od Ciebie :(

Cytat: sesef w 20 Marzec 2016, 23:06
Swego czasu prowadziłem trochę testów z nadzieją na AVX-512 w Skylake i dostęp do instrukcji vpermw (_mm512_permutexvar_epi16), która szacunkowo powinna przyspieszyć obliczanie score o 15-20% i dodatkowo odciążyć cache.
AVX-512 jest dostępny tylko w serwerowych Skylake.
epi16 działa na shortach.  U mnie w kodzie wszystko zmniejszyłem do rozmiaru jednego bajta. Dzięki temu użycie cache jest dość niewielkie, chociaż i tak za duże. Nie pamiętam już dokładnie, ale tridict i bidict zajmują dużą część L1.
BTW. vpermw wygląda podobnie do PSHUFB, które jest kluczowe w mojej implementacji SIMD, ale działa niestety na 16 bitowych danych jak PSHUFLW/PSHUFHW. Pewnie kod z vpermw działałby szybciej niż aktualny AVX2: po rozszerzeniu wektora 8*32 na 16*32 powinno być mniej operacji potrzebnych do faktycznego obliczenia permutacji. Może nawet w jednej operacji da się to zmieścić. PSHUFB w AVX2 niestety działa jak dwie operacje PSHUFB, nie ma prawdziwego rozszerzenia na 32 bajty.

Cytat: sesef w 20 Marzec 2016, 23:06
Największą bolączką tej wersji algorytmu jest losowy dostęp do cache z dość sporą ilością błędnych trafień
Gdyby dostęp nie był losowy - czyli przewidywalny - nie mielibyśmy do czynienia z szyfrowaniem, prawda?

Cytat: sesef w 20 Marzec 2016, 23:06
oraz mielenie prawie tych samych danych przy każdym kolejnym score. Dane wejściowe między dwoma wywołaniami funkcji score zmieniają się w niewielkim stopniu a i tak całościowy wynik jest liczony od początku (w sporej części przy obu wywołaniach odwołania pójdą do tych samych miejsc w pamięci w lookup_table.
Rzeczywiście tak jest, ale wykrycie gdzie były zmiany mogłoby zająć więcej czasu niż przeliczenie od nowa. Tutaj też nie pomaga jakość oryginalnego kodu enigmy, który z pewnością "działa", ale nie wygląda jakby był napisany przez inżyniera oprogramowania ;)

Cytat: sesef w 20 Marzec 2016, 23:06
Na szybko przejrzałem Twoje zmiany i kod bez poważnych przeróbek Intel Compilerem się nie skompiluje więc nawet nie mam co kombinować, a z braku czasu nie będę miał kiedy go dostosować (największym problemem jest brak obsługi __attribute__ ((vector_size(16))), tutaj trzeba by albo przerabiać kod albo napisać obsługę wszystkich potrzebnych operatorów dla używanych typów + wykorzystać standardowe __m128i/__m256i). Ze względu na taki charakter kodu przypuszczam, że pod windowsem całość kompilujesz przy pomocy mingw?
Celowo odpuściłem sobie wsparcie dla innych kompilatorów. Skoro i tak są użyte intrinsics, które działają prawie jak wstawki assemblerowe, to kompilator nie ma pola do popisu przy automatycznej wektoryzacji. Może tylko lepiej lub gorzej zaplanować użycie rejestrów itp. A dodatkowa praca włożona w zgodność z wieloma kompilatorami raczej jest niewspółmierna do wyniku.

Cytat: sesef w 20 Marzec 2016, 23:06
Sprawdzanie czy dana wersja liczy poprawnie bazując tylko na wyniku walidacji jest trochę błędne bo walidator potrafi przepuścić nawet błędnie policzone próbki. Tutaj lepszym rozwiązaniem byłoby z przeliczonych próbek mając startowego seed-a przeliczyć te wu ponownie niemodyfikowanym kodem.
Lepiej byłoby mieć testy jednostkowe i trochę innych takich.
Nie modyfikowałem algorytmu optymalizującego (sic!, jeśli wierzyć nazwie to jest hillclimb), więc myślę, że można zaufać, że ta część działa nadal poprawnie. Zmodyfikowałem za to dekodowanie i obliczanie ocen. Tutaj na razie kod się trzyma na słowo honoru :) Pisałem go zanim odkryłem testy jednostkowe w C/C++, więc zmiany testowałem prawie ręcznie.
Jak chodzi o przeliczanie z tym samym seedem, to jest dosyć czasochłonne i wymaga modyfikacji kodu - trzeba by dodać jakiś przełącznik do linii poleceń. Wolę napisać sensowne unit testy, bo te przydadzą się przy ewentualnej dalszej modyfikacji. Na szczęście dekodowanie i wyliczanie ocen dobrze nadaje się do tego typu testów: to są dostatecznie małe fragmenty, dobrze oddzielone w kodzie (przynajmniej powinny być po moich zmianach).
#30
Enigma@home / Enigma Optima
20 Marzec 2016, 20:13
Cytat: krzyszp w 20 Marzec 2016, 19:57
Omyłkowo najpierw skopiowałem wersję AVX2 (a mam samo AVX) i niestety przekroczyłem limit dzienny.
Dlatego na razie to jest zamknięta alfa ;) Właściwie specjalnie upośledziłem mój program, bo mam zaimplementowaną autodetekcję - chciałem żeby była możliwość porównania różnych wersji na tej samej maszynie.
U PDH widać, że AVX2 prawdopodobnie działa szybciej niż SSSE3. Miłe.
Cytat: krzyszp w 20 Marzec 2016, 19:57
Odnośnie ankiety - ja mam zarówno Linux64 jak i Windows64 ;)
Nie chciałem za bardzo komplikować. Jak możesz wybierz ten ważniejszy wg Ciebie:)



Myślę, że dobrze jakby każdy z testerów przeliczył ok. 100 próbek zanim pojedziemy dalej. W przypadku AVX2 wolałbym mieć ich jeszcze więcej, bo nie ufam sobie sprzed dwóch lat  :ph34r:

W sprawie linuksa: walczę z instalacją Arch. Jestem noobem w partycjonowaniu dla linuksa a liveCD gparted nie chce ruszyć na Virtual Box. :shame:
#31
Enigma@home / Enigma Optima
20 Marzec 2016, 19:24
Cytat: Szopler w 20 Marzec 2016, 18:24
Zmiana nazwy pliku - błąd. Zamiast tego powinien być plik app_info.xml.

Jesteś pewien, że przeczytałeś całość?
Plik app_info.xml pochodzi z c2b.zip i jest kopiowany.
A jeżeli chodzi Ci o to, żeby odpowiednia nazwa była w pliku app_info.xml, możesz przygotować taki plik. Na razie nie miałem na to czasu.
#32
Enigma@home / Enigma Optima
20 Marzec 2016, 18:20
Jak uruchomić optymalkę

Dla tych, którzy nigdy nie instalowali zoptymalizowanej enigmy małe How-To.

Zoptymalizowane programy BOINC obsługuje przez anonimową platformę. Ten mechanizm pozawala na uruchomienie klienta na egzotycznej platformie, np. kiedyś ARM; pozwala też na użycie własnych/specjalnych kompilacji - tak działają np. optymalki dla SETI i wszystkie inne.

Co jest potrzebne

  • Zainstalowany BOINC podłączony do projektu enigma@home ;)
  • Release enigma-optima
  • Pliki konfiguracyjne app_info.xml  itd. Najprościej użyć tych przygotowanych przez TJM na oficjalnym forum. Bezpośredni link do c2d.zip

Co z tym zrobić

Zakładam, że BOINC jest zainstalowany standardowo i dane są w c:\ProgramData\BOINC.1

Jeżeli masz inną optymalkę, wystarczy przy zatrzymanym BOINC podmienić exe (np. enigma_0.76_windows_intelx86.exe) na wybrany plik enigma-optima. Wystarczy skopiować i zmienić nazwę na zgodną z app_info.xml.

Operacje opisane są w widoku zaawansowanym BOINC Manager (w menu Widok-> Widok zaawansowany...)

Do rzeczy:
Opjonalne: Instalacja z oczekiwaniem na zakończenie zadań
Po zainstalowaniu optymalki BOINC porzuci wszystkie poprzednie zadania z projektu enigma@home. Przed kontynuowaniem prawdopodobnie chcesz doliczyć aktywne zadania do końca.
1. Wybierz zakładkę Projekty
2. Wybierz projekt Enigma@home
3. Z menu po lewej wybierz "Nie pobieraj danych"
4. Wybierz zakładkę Zadania
5. Wybierz "Pokaż wszystkie zadania" z menu po lewej
6. Wybierz wszystkie nierozpoczęte zadania Enigma@Home
7. "Przerwij" wybrane zadania przyciskiem w menu po lewej
8. Poczekaj aż zakończą się rozpoczęte zadania Enigma@Home
9. Wykonaj instalację Enigma Optima (poniżej)
10. Wybierz zakładkę projekty
11. Wybierz projekt Enigma@Home
12. Wybierz "Pobieraj nowe dane" w menu po lewej

Instalacja Enigma Optima
Właściwy proces instalacji.

1. Zatrzymaj klienta BOINC (Plik -> Zamknij podłączonego klienta...)
2. Otwórz folder projektu c:\ProgramData\BOINC\projects\www.enigmaathome.net\
3. Rozpakuj do niego pliki z c2d.zip. Należy pominąć folder c2d. Wszystkie pliki powinny być bezpośrednio w folderze projektu, np. c:\ProgramData\BOINC\projects\www.enigmaathome.net\app_info.xml.
4. Rozpakuj plik enigma-optima.basic.exe do folderu projektu.
5. Zmień nazwę enigma-optima.basic.exe na enigma_0.76_windows_intelx86.exe - nadpisz istniejący plik.
6. Uruchom ponownie klienta BOINC. (Plik -> Wybierz komputer...; pozostaw pola puste i kliknij OK)

Alternatywnie:
Jeżeli twój procesor ma AVX2 lub SSSE3 użyj pliku z odpowiednią nazwą zamiast enigma-optima.basic.exe.




  • Jeżeli masz zmienione opcje instalacji, to jako wytrawny hacker nie potrzebujesz tej instrukcji :)

#33
Enigma@home / Enigma Optima
19 Marzec 2016, 12:10
Opublikowałem pierwszą wersję alpha.

Plik jest zaszyfrowany. Hasło udostępnię przez wiadomości prywatne tu na forum. Zainteresowanych proszę o kontakt. Po prostu chcę wiedzieć kogo męczyć pytaniami, bo to bardzo wczesna wersja.


  • W tej wersji obsługiwany jest tylko Windows x64.
  • WUPES, planowałem nie wspierać 32 bitów. Twój procesor wspiera SSSE3, więc może się przekonam. Możliwe, że dotyczy cię problem z SSSE3 opisany poniżej.
  • Wersja dla Linux będzie dostępna jak tylko zainstaluję sobie Arch-Linux, niestety wcześniej muszę zdecydować, czy użyć Hyper-V, czy VBox. Oba rozwiązania mają poważne wady :(

W archiwum znajdują się 3 pliki,

  • basic używa zoptymalizowanego kodu bez SIMD. I tak jest szybsza niż wersja sesefa. Wg zasad poprzedniego testu osiąga ok. 12s. Ten kod praktycznie wymaga architektury x64 - ważna jest liczba rejestrów sprzętowych.
  • SSSE3 wymaga przynajmniej Intel Core 2+/Merom. Niestety w jądrze Merom operacja PSHUFB jest powolna (wg. agner.org). Dopiero któraś nowsza wersja będzie dostatecznie szybka (Wolfdale, ale może coś wcześniej). Nie ma wersji AVX, bo byłaby identyczna z SSSE3.
  • AVX2 wymaga przynajmniej procesora Haswell. Nie wiem jak szybko działa ta wersja.
#34
Enigma@home / Enigma Optima
18 Marzec 2016, 19:34
Przeliczyłem jakieś 200 próbek: 0 błędów. Jutro zrobię release, bo dzisiaj nie mam już na to czasu.
#35
Enigma@home / Enigma Optima
17 Marzec 2016, 10:06
Dzięki za propozycje. Moje WU są jeszcze w drodze, więc trzeba chwilę zaczekać.

Wersja dla Linuxa powinna działać. W programie są chyba dwa miejsca zależne od OS: obsługa przerwania działania (Ctrl-C w Windows) i generator liczb losowych.
Trochę za słabo znam platformę, ale wydaje mi się że jak skompiluję np. na Arch-Linuksie, to będzie działać na innych? Poprawcie mnie, jeżeli się mylę.1

W międzyczasie w sprawie szybkości:
Uważaj co mierzysz!

Doznałem małego olśnienia i postanowiłem sprawdzić CPU time zamiast mierzenia czasu zegarowego.













vanillasesefAgbar
obciążony (czas zegarowy) 40.927.130.3
obciążony (czas CPU)240.926.322.4
obciążony (vanilla CPU%)100%65.1%55.7%
nieobciążony (czas zegarowy)20.513.811.2
nieobciążony (czas CPU)220.013.210.8
nieobciążony (vanilla CPU%)100%66.4%54.1%

Widać, że dzisiaj mam inaczej obciążony procesor ;) Nie liczy się WCG, tylko zadania enigmy. Za to bez wątpliwości moja wersja działa dużo szybciej.
O ile dobrze pamiętam zmieniłem ustawianie priorytetu na BACKGROUND, co oprócz obniżenia priorytetu planowania procesora obniża też priorytet innych zasobów. Przypuszczam, że dłuższy czas wykonania jest spowodowany oczekiwaniem na IO: enigma loguje każdy kolejny najlepszy wynik.
To może nie jest najlepszy wybór dla tych, którzy mają dedykowane maszyny do BOINC i chcieliby osiągnąć największą przepustowość (WU/h).




  • Arch jest jedną z niewielu dystrybucji z GCC 5+ w standardzie. Nie chcę się bawić z kompatybilnością z innymi kompilatorami, bo nie warto.
  • CPU time jest zmierzony z dokładnością -0/+500ms, czyli czasy mogą być większe nie więcej niż o 0.5s, ale to nie zmieni wyników zasadniczo.
#36
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+
#37
Jest gdzieś kod źródłowy tej wersji? Program enigmy jest opublikowany na zasadach GNU GPL v2 i wymagana jest publikacja kodu.
#38
Może Bittorent Sync?
http://labs.bittorrent.com/experiments/sync.html
Jeżeli komputery nie widzą zewnętrznej sieci, klient może mieć listę takich, z którymi zawsze próbuje się połączyć (local IP, netbios name).
#39
Ustaw krótszy minimalny bufor. Nie chce mi się tłumaczyć tego inaczej niż "It's complicated".
#40
Jeżeli jeszcze nie wiecie, są już próbki na sierpień.