-
31. Data: 2013-04-17 16:21:54
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: Edek <e...@g...com>
Dnia Wed, 17 Apr 2013 06:35:28 -0700 po głębokim namyśle M.M. rzekł:
> Wziąłem taką wersję:
> http://pastebin.com/JBhgCNLr
>
>
> Kompilacja:
> g++ -O3 main.cpp -o mb
>
>
> Uruchomienie:
> time ./mb 1000 1000
> test = 1423724113.000000
> real 0m8.968s
> user 0m8.945s
> sys 0m0.004s
>
> Jak to należy zoptymalizować?
Skompilowałem tą wersję:
http://pastebin.com/U4ecBuWd
Wygląda na zwektoryzowaną jak cholera, a to domyślne gcc.
Kompilacja:
gcc -S -O3 -march=native main.cpp
Nie wiem tylko, jakie kolorowanie w pastebin wybrać pod assembler,
pomijając kwestię "uważaj co jest pod Ctrl-C zanim wkleisz"...
$ time ./mb 1000 1000
test = 1423724113.000000
real 0m5.158s
user 0m5.146s
sys 0m0.000s
To jest i7, wygląda na to że w syntetycznych i3 jest podobne do i7.
--
Edek
-
32. Data: 2013-04-17 16:25:18
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: Edek <e...@g...com>
Dnia Wed, 17 Apr 2013 14:21:54 +0000 po głębokim namyśle Edek rzekł:
> Dnia Wed, 17 Apr 2013 06:35:28 -0700 po głębokim namyśle M.M. rzekł:
>
>> Wziąłem taką wersję: http://pastebin.com/JBhgCNLr
> Skompilowałem tą wersję:
>
> http://pastebin.com/U4ecBuWd
Ślepota, znalazłem ASM (NASM):
http://pastebin.com/4bfNzwMc
--
Edek
-
33. Data: 2013-04-17 16:53:33
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: "M.M." <m...@g...com>
On Wednesday, April 17, 2013 4:25:18 PM UTC+2, Edek wrote:
> Dnia Wed, 17 Apr 2013 14:21:54 +0000 po głębokim namyśle Edek rzekł:
> > Dnia Wed, 17 Apr 2013 06:35:28 -0700 po głębokim namyśle M.M. rzekł:
> >> Wziąłem taką wersję: http://pastebin.com/JBhgCNLr
> > Skompilowałem tą wersję:
> > http://pastebin.com/U4ecBuWd
> Ślepota, znalazłem ASM (NASM):
> http://pastebin.com/4bfNzwMc
Czy to juz jest zoptymalizowana recznie wersja?
Jesli tak, to jaki ma czas wzgledem GCC?
Pozdrawiam
-
34. Data: 2013-04-17 17:16:14
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: Edek <e...@g...com>
Dnia Wed, 17 Apr 2013 07:53:33 -0700 po głębokim namyśle M.M. rzekł:
> On Wednesday, April 17, 2013 4:25:18 PM UTC+2, Edek wrote:
>> Dnia Wed, 17 Apr 2013 14:21:54 +0000 po głębokim namyśle Edek rzekł:
>> > Dnia Wed, 17 Apr 2013 06:35:28 -0700 po głębokim namyśle M.M. rzekł:
>> >> Wziąłem taką wersję: http://pastebin.com/JBhgCNLr
>> > Skompilowałem tą wersję:
>> > http://pastebin.com/U4ecBuWd
>> Ślepota, znalazłem ASM (NASM):
>> http://pastebin.com/4bfNzwMc
>
> Czy to juz jest zoptymalizowana recznie wersja?
> Jesli tak, to jaki ma czas wzgledem GCC?
Nie, to było to co wkleiłeś tylko skompilowane jak opisałem.
Zmieniłem tylko kolorowanie, dlatego drugi raz :)
--
Edek
-
35. Data: 2013-04-17 17:47:10
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: firr kenobi <p...@g...com>
i co to niby mierzyc ? moja wersja
niezuptymalizowana to bardziej
int mandelbrot_n( double cRe, double cIm, int max_iter )
{
double re = 0;
double im = 0;
for(int n=0; n<max_iter; n++)
{
if( re * re + im * im > 4.0 ) return n;
double re_n = re * re - im * im + cRe;
double im_n = 2 * re * im + cIm;
re = re_n;
im = im_n;
}
return 0;
}
void mandelbrot_test(int CLIENT_X, int CLIENT_Y, double ox, double oy, double lx, int
max_iter)
{
double ly = lx * CLIENT_Y / CLIENT_X;
double dx = lx / CLIENT_X;
double dy = ly / CLIENT_Y;
double ax = ox - lx * 0.5 + dx * 0.5;
double ay = oy - ly * 0.5 + dy * 0.5;
for( int j=0 ; j<CLIENT_Y; j++ )
{
double c_im = ay + j * dy;
for( int i=0 ; i<CLIENT_X; i++ )
{
double c_re = ax + i * dx;
int n = mandelbrot_n(c_re, c_im, max_iter);
SetPixelInDibInt(i ,j, palette[n]);
}
}
}
test()
{
mandelbrot_test(500,400,-.5, 0., 3.0, 100);
}
to trwa 300 ms -
tu jest skompilowane wersja
mandelbrot_test(500,400,-.5, 0., 3.0, 500);
https://dl.dropboxusercontent.com/u/42887985/mdbtst.
zip
co trwa ok 1400 ms i zoptymalizowane co
trwa ok 75 ms
mozesz sobie skompilowac tamten kod wyzej
w wersji dla 500 iteracji i porownac z moim execami - i powiedziec tez mi jak
one szybko chodzą - bedzie to troche
przyblizony test bo bez setpixel ale
costam powie
-
36. Data: 2013-04-17 18:02:23
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: Edek <e...@g...com>
Dnia Wed, 17 Apr 2013 07:53:33 -0700 po głębokim namyśle M.M. rzekł:
> On Wednesday, April 17, 2013 4:25:18 PM UTC+2, Edek wrote:
>> Dnia Wed, 17 Apr 2013 14:21:54 +0000 po głębokim namyśle Edek rzekł:
>> > Dnia Wed, 17 Apr 2013 06:35:28 -0700 po głębokim namyśle M.M. rzekł:
>> >> Wziąłem taką wersję: http://pastebin.com/JBhgCNLr
>> > Skompilowałem tą wersję:
>> > http://pastebin.com/U4ecBuWd
>> Ślepota, znalazłem ASM (NASM):
>> http://pastebin.com/4bfNzwMc
>
> Czy to juz jest zoptymalizowana recznie wersja?
> Jesli tak, to jaki ma czas wzgledem GCC?
Tu masz zoptymalizowaną (expression template dla ubogich):
http://pastebin.com/itqTw1ii
Poprzedni czas dla przypomnienia:
Wed Apr 17 17:54:12 {0} user@localhost ~/tmp/firr2]
$ time ./mb 1000 1000
test = 1423724113.000000
real 0m5.156s
user 0m5.143s
sys 0m0.001s
Aktualny, to co wkleiłem:
$ time ./mb1 1000 1000
test = 1423724113.000000
real 0m2.605s
user 0m2.596s
sys 0m0.001s
Dalej mi się teraz już nie chce... firr, zapodaj coś do testu.
PS: obie kompilowane tak
gcc -O3 -fwhole-program -march=native main.cpp -o mb
--
Edek
-
37. Data: 2013-04-17 19:42:11
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: "M.M." <m...@g...com>
On Wednesday, April 17, 2013 6:02:23 PM UTC+2, Edek wrote:
[...]
> Dalej mi się teraz już nie chce... firr, zapodaj coś do testu.
> PS: obie kompilowane tak
> gcc -O3 -fwhole-program -march=native main.cpp -o mb
Zadanie jest dobre. Jest dostatecznie proste żeby się pobawić
przy okazji dyskusji na grupie i dość skomplikowane aby dało
się pobawić w optymalizację.
Pozdrawiam
-
38. Data: 2013-04-17 19:48:55
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: "AK" <n...@n...com>
Użytkownik "Miroslaw Kwasniak" <m...@i...zind.ikem.pwr.wroc.pl> napisał:
> Ale długo to trwało, bo Cooley&Tukey nie byli piewszymi, którzy wynaleźli FFT
> ;)
O ! A to ciekawostka. Bylem przekonany, ze to oni.
Mozesz rozwinac termat ?
Czyzby "zerzneli" ?
AK
-
39. Data: 2013-04-17 19:53:49
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: firr kenobi <p...@g...com>
W dniu środa, 17 kwietnia 2013 19:42:11 UTC+2 użytkownik M.M. napisał:
> On Wednesday, April 17, 2013 6:02:23 PM UTC+2, Edek wrote:
>
> [...]
>
> > Dalej mi się teraz już nie chce... firr, zapodaj coś do testu.
>
> > PS: obie kompilowane tak
>
> > gcc -O3 -fwhole-program -march=native main.cpp -o mb
>
> Zadanie jest dobre. Jest dostatecznie proste żeby się pobawić
>
> przy okazji dyskusji na grupie i dość skomplikowane aby dało
>
> się pobawić w optymalizację.
>
dla mnie nieco dziaczne te testy bo
co to ma mierzyc - ew chyba ogolna
wydajnosc algorytmu (tutaj wychodzi 1.4 miliarda iteracji na pare sekund
czyli wydajnosc podobna do mojej optymalizowanej wersji na prawie 10 letnim p4)
zapusclem wersje optymalizowana na tym obszarze i dala wynik 4 sekundy (suma
kontrolna co prawda 1.415 miliarda nie
dokladnie jak tu ale to pewnie wynika
z drobnych roznic w kodzie petli itp
raczej to jest to samo obliczenie)
wersa nieoptymalizowana trwa tak dlugo ze nie chce mi sie czekac - podejrzewam ze 80
sekund ;)
-
40. Data: 2013-04-17 20:47:59
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: firr kenobi <p...@g...com>
W dniu środa, 17 kwietnia 2013 16:25:18 UTC+2 użytkownik Edek napisał:
> Dnia Wed, 17 Apr 2013 14:21:54 +0000 po głębokim namyśle Edek rzekł:
>
>
>
> > Dnia Wed, 17 Apr 2013 06:35:28 -0700 po głębokim namyśle M.M. rzekł:
>
> >
>
> >> Wziąłem taką wersję: http://pastebin.com/JBhgCNLr
>
>
>
> > Skompilowałem tą wersję:
>
> >
>
> > http://pastebin.com/U4ecBuWd
>
>
>
> Ślepota, znalazłem ASM (NASM):
>
>
>
> http://pastebin.com/4bfNzwMc
>
>
>
wypadaloby raczej czytac wersje z
komantarzami - borland jakos potrafi
cos takiego wiec i gcc chyba powinien
(wstawia linijki zrodla w c w postaci
komantarza + sa nazwy funkcji itp
nieststy gubi nazwy niektorych zmiennych, (niektóre są, zdaje sie ze
globalne sa a lokalne sobie zamienia
na np $accjifia )
podsumwujac jesli ktos mialby to
przegladac to lepiej wygenerowac
z nazwami ;)