-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Edek Pienkowski <e...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: kryzys jezyków kompilowanych do kodu 'natywnego'
Date: Sat, 14 Apr 2012 12:49:58 +0000 (UTC)
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 59
Message-ID: <jmbrpl$bn3$2@inews.gazeta.pl>
References: <jm74e2$g97$1@inews.gazeta.pl> <jm8l2q$k1b$1@inews.gazeta.pl>
<jm8lrt$hk4$1@inews.gazeta.pl> <jm910j$flf$1@polsl.pl>
<7930108.1291.1334317069612.JavaMail.geo-discussion-forums@ynbq18>
<jm9en8$5uv$1@inews.gazeta.pl> <jm9uk3$rrn$2@inews.gazeta.pl>
<jmaf6t$cgr$1@inews.gazeta.pl> <jmbkh8$bn3$1@inews.gazeta.pl>
<jmbmsq$gei$1@inews.gazeta.pl>
NNTP-Posting-Host: 81.219.27.0
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1334407798 12003 81.219.27.0 (14 Apr 2012 12:49:58 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sat, 14 Apr 2012 12:49:58 +0000 (UTC)
X-User: pieniekusenet
User-Agent: Pan/0.135 (Tomorrow I'll Wake Up and Scald Myself with Tea; GIT 30dc37b
master)
Xref: news-archive.icm.edu.pl pl.comp.programming:196743
[ ukryj nagłówki ]Dnia Sat, 14 Apr 2012 11:26:18 +0000, M.M. napisal:
> Edek Pienkowski <e...@g...com> napisał(a):
>
>> Ja miałem. Bawiłem się jedym algorytmem przez miesiąc, przepisując
>> często całość inaczej. Najgorsze było to, że czasami efekty były
>> odwrotne na Core2 niż na i7.
> Rozumiem że chodzi o zmiany implementacyjne, a algorytm ciągle był
> ten sam. Można wiedzieć jakie miałeś przyspieszenia pomiędzy "rozsądną"
> implementacją a tą najlepszą i co to za algorytm?
Sieć NN, nuda jak cholera. Każdy pseudo-neuron był połączony z
poprzednim(i) layerem(ami) na zasadzie kształtu - layer 2D,
kształt tego rodzaju, że obejmuje neurony "najbliżej", z tymi ma link,
chociaż mógł być "co któryś", jak w iteracji ze step.
Optymalizowałem uczenie, czyli forward pass, ocena, uczenie. Uczenie
na zasadzie zmian przy złym wyniku bez back-prop., potem jeszcze
wzmacnianie połączeń przy "dobrym". Funkcja typu clip (0.,1.),
ale binaryzowana 3-8 bitów na neuron
(przy 3: 0., 0. + 1./7. , ..., 1.). Pomijając gęstość
informacji na podstawie czytanych prac, słabo znam temat NN,
to binaryzowanie fajnie na CUDA działało, bo dużo więcej
się mieściło w shared, chociaż na starych kartach (1.3) to było
jeszcze przewidywalne, ale na cc 2.1 już nie miałem czasami pojęcia,
dlaczego coś jest szybsze lub, oczywiście z zaskoczenia, 30%
wolniejsze.
Jakkolwiek by się nie napisało algorytmu dostępy bywały mocno
nieregularne, to nie każdy-z-każdym. Na i7 lepszy był naiwny
algorytm, każdy link miał dwa floaty i kilka pointerów, alokowany
przez new, a na Core 2 lepsze było SoA, chociaż tu znowu
sporo zależało od "kształtu", ile linków na neuron i proporcji
do rozmiaru layera. Przy wielkich oczywiście pomagało tiling
ze względu na cache, ale ja zazwyczaj miałem dużo layerów
raczej niewielkich (nieliniowe mają inne
właściwości, jest sens robić więcej layerów, ilość informacji
w nieliniowych jest inna niż w liniowych, o ile znam temat;
w każdym razie to nie jest minimalizacja).
Tylko dlatego tak naprawdę sporo czasu na to poświęciłem,
że właśnie nie było to nic regularnego, a jednocześnie w miarę
niewielkie.
Różnice były rzędu kilku %, ale zdarzały się odchyły rzędu
20% gorzej. Całość po kompilacji trafiała do jednej wielkiej
metody, zmieniałem głównie layout danych, kolejność iteracji,
alignment, opcje typu fp+sse/sse z różnym skutkiem no i
to PGO. Oczywiście główną alternatywą był push albo pull,
swoje też dodawał random.
Coś czego do dzisiaj nie rozumiem: pierwsze przebiegi były
sporo wolniejsze, potem kilka ze 2-3% szybsze, potem plateau o ile
system czegoś akurat nie robił. Chyba na i7, nie pamiętam. Tego
że seria przebiegów miała ten peak nie rozumiem,
a sprawdziłem, że mi się wcale nie przywidziało, kilka razy.
Edek
Następne wpisy z tego wątku
- 14.04.12 20:43 Sebastian Biały
- 15.04.12 04:54 M.M.
- 15.04.12 11:37 Edek Pienkowski
- 15.04.12 12:11 Edek Pienkowski
- 16.04.12 22:01 AK
- 17.04.12 01:12 Andrzej Jarzabek
- 17.04.12 14:26 AK
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-29 Warszawa => Mid IT Recruiter <=
- 2025-01-29 Białystok => UX Designer <=
- 2025-01-29 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-29 Warszawa => Expert Recruiter 360 <=
- 2025-01-29 Zdalny podpis
- 2025-01-29 Nazbyt "muzyczne" słuchawki
- 2025-01-29 Warszawa => QA Engineer <=
- 2025-01-29 Prawo jak je [nie]rząd rozumie.
- 2025-01-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-01-29 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-29 Warszawa => Software .Net Developer <=
- 2025-01-28 Ściąganie hasła frezem
- 2025-01-28 Rok 1973
- 2025-01-28 Warszawa => Programista Dynamics 365 CRM <=
- 2025-01-28 Warszawa => Senior Frontend Developer (React + React Native) <=