Article View: pl.comp.programming
Article #205131Re: Podpis cyfrowy większej ilości podmiotów
From: Edek
Date: Thu, 18 Apr 2013 13:24
Date: Thu, 18 Apr 2013 13:24
71 lines
5006 bytes
5006 bytes
Dnia Thu, 18 Apr 2013 14:46:35 +0200 po głębokim namyśle bartekltg rzekł: > W dniu 2013-04-18 13:13, Edek pisze: >> http://blogs.mathworks.com/loren/2011/07/18/a-mandelbrot-set-on-the- gpu/ >> >> Mówi o 340x szybciej w Matlabie. > > Strasznie tu "oszukują". Porównują kod dla gpu napisany w c++ > wg rozważanego w watku algorytmu (na razie ok) z taką samą iteracją na > macierzach... ale bez warunku "norma>2 to nie licz dalej" > i wszystkie piksele mieli maxIterations+1 razy;-) To nasze grupowe > algorytmy będą od tego kilka-kilkanaście razy szybsze. Matlab to nie pisanie bezpośrednio na gpu, nawet nie chciało mi się specjalnie czytać, fir się pytał "ile razy szybciej", to mu podałem żródło :) > Bez zmiany algorytmu GPU przyspieszyło im 16 razy, > i tego rzędu przyspieszenia (z przeczuciem na ciut mniejsze) > bym się spodziewał w porównaniu cpu/gpu. Nie wiem jakie masz doświadczenie z gpu, ale tam oszacowuje się algorytmy przez najniższą z przepustowości - np. nominalnie we floatach przepustowość RAM jest ~70 razy mniejsza od obliczeniowej, zależy oczywiście od tego ile się wczytuje i ile wyników się zapisuje i czy dostęp do ram jest uszeregowany czy nie. W Mandelbrot przepustowość RAM jest prawie pomijalna, zostaje obliczeniowa. To się naprawdę bierze ze specyfikacji i wychodzi dokładnie czego się człowiek spodziewa, jeżeli się dobrze policzy. Obliczeniową liczy się na podstawie Occupancy - jest do tego kalkulator i profiler. Occupancy jest miarą "zużycia potencjału" rdzeni - jest kilka ograniczeń typu ilość rejestrów, spills, liczby blocków i wątków itp. Między innymi w Mandelbrot siłą rzeczy część pary idzie w gwizdek jeżeli sąsiednie pixele policzą się w mniejszej ilośći iteracji, ale ciśnienia na inne limity nie widzę na dzisiejszych kartach. I teraz tak: mając niezależne pętle dla sąsiednich pixeli przydaje się instrukcja "any" - jeżeli żaden z wątków nie ma nic do liczenia kończy się 16x16 pixeli czy ile ich tam razem będzie optymalnie sprawdzając po każdej iteracji. Pytanie do Ciebie byłoby takie: jak dobrać ilość/kształt pixeli przetwarzanych razem i jak policzyć ilość marnowanej mocy obliczeniowej przez blok pixeli, z których część kończy iteracje wcześniej, zakladająć że "any" nie kosztuje mocy obliczeniowej - inne bloki w tym czasie liczą - tylko traci się na czas na pixele "już policzone" w bloku. Założenie trochę naciągane, ale niech będzie. Serio, takie obliczenie wydajności gpu ma sens. Gpu w przeciwieństwie do złożonych Inteli jest przewidywalne. Zaczęło mieć odchyły tak około GTX 460/465, oczywiście w dół. Ja się nie podejmuję, ale widzę że praktykujesz matmę mocniej niż ja, więc jak ci się chce to powiedz jak dobrać optymalne parametry, pewnie na podstawie rozkładów ilości iteracji. Optymalne wymiary bloku i oszacowanie "strat" przepustowości. Bo detale doboru funkcji (abs/norm/dzielenie.vs.mnożenie) i oczekiwanej prezyzji są w instrukcji. Mogę co najwyżej obiecać, że przetestuję wyniki, to prosty algorytm. -- Edek
Technical Details
Message-ID:
<kkos77$g5v$2@news.task.gda.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.task.gda.pl!not-for-mailReferences:
<kkdqot$5rl$1@node2.news.atman.pl> <kkdtr5$9n9$1@node1.news.atman.pl> <2795af88-99c6-4f35-8a9d-22bda8af2925@googlegroups.com> <kkec03$n4h$1@node2.news.atman.pl> <a9253e59-21f5-43b5-853a-c60cb43c1f15@googlegroups.com> <kkfd89$o9b$1@news.task.gda.pl> <0fff07bc-e341-49a0-810c-333536e2901a@googlegroups.com> <kkh42k$81t$1@news.task.gda.pl> <b177dfc7-88f3-4cd7-9075-2acdd76f9662@googlegroups.com> <kkhr56$a62$1@news.task.gda.pl> <30021d10-a471-4cae-8f17-61eb36cb775e@googlegroups.com> <kkkjpe$b54$1@news.task.gda.pl> <8b53662c-8c31-4fc3-b82b-8173d9cf4f6f@googlegroups.com> <47d7734e-680b-4e13-995e-c0a2407217c3@googlegroups.com> <cdced490-b579-41ee-a123-afb12010cc12@googlegroups.com> <kkmvfc$hu3$2@news.task.gda.pl> <d936ef81-4b63-4dcb-8771-cc2a1faab4e1@googlegroups.com> <kkoi2a$o70$1@news.task.gda.pl> <21b4f3f3-7fce-470e-b839-3264af0a6349@googlegroups.com> <kkokfu$o70$3@news.task.gda.pl> <kkopvd$u03$1@node2.news.atman.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.task.gda.pl!not-for-mail From: Edek <edek.pienkowski@gmail.com> Newsgroups: pl.comp.programming Subject: Re: Podpis cyfrowy większej ilości podmiotów Date: Thu, 18 Apr 2013 13:24:56 +0000 (UTC) Organization: CI TASK http://www.task.gda.pl/ Lines: 72 Message-ID: <kkos77$g5v$2@news.task.gda.pl> References: <kkdqot$5rl$1@node2.news.atman.pl> <kkdtr5$9n9$1@node1.news.atman.pl> <2795af88-99c6-4f35-8a9d-22bda8af2925@googlegroups.com> <kkec03$n4h$1@node2.news.atman.pl> <a9253e59-21f5-43b5-853a-c60cb43c1f15@googlegroups.com> <kkfd89$o9b$1@news.task.gda.pl> <0fff07bc-e341-49a0-810c-333536e2901a@googlegroups.com> <kkh42k$81t$1@news.task.gda.pl> <b177dfc7-88f3-4cd7-9075-2acdd76f9662@googlegroups.com> <kkhr56$a62$1@news.task.gda.pl> <30021d10-a471-4cae-8f17-61eb36cb775e@googlegroups.com> <kkkjpe$b54$1@news.task.gda.pl> <8b53662c-8c31-4fc3-b82b-8173d9cf4f6f@googlegroups.com> <47d7734e-680b-4e13-995e-c0a2407217c3@googlegroups.com> <cdced490-b579-41ee-a123-afb12010cc12@googlegroups.com> <kkmvfc$hu3$2@news.task.gda.pl> <d936ef81-4b63-4dcb-8771-cc2a1faab4e1@googlegroups.com> <kkoi2a$o70$1@news.task.gda.pl> <21b4f3f3-7fce-470e-b839-3264af0a6349@googlegroups.com> <kkokfu$o70$3@news.task.gda.pl> <kkopvd$u03$1@node2.news.atman.pl> NNTP-Posting-Host: 178-36-247-220.adsl.inetia.pl Mime-Version: 1.0 X-Trace: news.task.gda.pl 1366291496 16575 178.36.247.220 (18 Apr 2013 13:24:56 GMT) X-Complaints-To: abuse@news.task.gda.pl NNTP-Posting-Date: Thu, 18 Apr 2013 13:24:56 +0000 (UTC) User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit