-
71. Data: 2012-03-06 12:52:55
Temat: Re: OpenMP - pewnie, że szybciej (aka "zagadka" rozwiązana)
Od: Michoo <m...@v...pl>
On 06.03.2012 10:43, slawek wrote:
>
> Użytkownik "Michoo" <m...@v...pl> napisał w wiadomości grup
> dyskusyjnych:jj3soa$jrf$...@m...internetia.pl...
>> ./a.out 1,97s user 0,00s system 389% cpu 0,507 total
>>
>> I mamy wykonanie 40% szybciej na 2 rdzeniach z HT (z narzutem na
>> zrównoleglenie 180%).
>>
>> Magia polega na dwóch zmianach:
>
> Przypadkiem zauważyłeś, że MSVC to Windows - natomiast ty uruchamiasz i
> testujesz pod Linuksem?
>
> Połowa (większa) problemu to narzuty "wewnętrzne" - widać po twoim
> teście jedynie to, że Linuks sprawdza się lepiej (czyli jak trzeba).
>
>> 1. NIE wykonywaniu TEGO SAMEGO kodu wielokrotnie (naprawdę się
>
> do for paralell jest równoważne parze linijek parallel/do for --
> przynajmniej to wyczytałem w opisie OpenMP
Bo tam jest to zapisane.
A czy wyczytałeś przy okazji coś o koszcie synchronizacji? Każdy blok
parallel to 2 punkty synchronizacji.
0x08048576 <+134>: call 0x8048474 <GOMP_parallel_start@plt>
0x0804857b <+139>: mov DWORD PTR [esp],esi
0x0804857e <+142>: call 0x8048750 <main._omp_fn.0>
0x08048583 <+147>: call 0x8048484 <GOMP_parallel_end@plt>
Lepiej je wykonać 200 razy niż 20000 razy. A jeszcze lepiej wykonać je
tylko raz.
Btw: na podstawie tu przedstawionych wniosków, stosując 2 drobne
modyfikacje w kodzie slawka uzyskałem czas:
$ time ./a.out
CPU time = 1.040000
just for fun 91.999668
./a.out 1,00s user 0,04s system 393% cpu 0,264 total
>
>> 2. sensowny przydział bloków obliczeń
>
> Sensowny dla MS Windows oznacza w tym przypadku kawałki liczące się
> około milisekund. A w programie są mikrosekundowe.
Zazwyczaj im mniej synchronizacji tym szybciej kod działa - to chyba
oczywiste. Przydaje się też, żeby nie właziły sobie nawzajem w cache.
--
Pozdrawiam
Michoo
-
72. Data: 2012-03-06 17:43:51
Temat: Re: OpenMP - pewnie, że szybciej (aka "zagadka" rozwiązana)
Od: "slawek" <s...@h...pl>
Użytkownik "Roman W" <b...@g...pl> napisał w wiadomości grup
dyskusyjnych:28251389.0.1331028057478.JavaMail.geo-d
iscussion-forums@vbpw16...
> No to przeciez 1ms to jest rzad wielkosci rozdzielczosci zegara
> systemowego. Nic dziwnego, ze masz duzy narzut. Czemu sie upierasz, zeby
> operowac na tak malych kawalkach?
Bo każdy większy kawałek jest powiązany związkiem przyczynowo-skutkowym.
Tzn. te "małe kawałki" nie są i dlatego można je liczyć równolegle. A te
"większe" są już od siebie zależne - i dlatego muszą być liczone
sekwencyjnie.
-
73. Data: 2012-03-06 18:08:47
Temat: Re: OpenMP - pewnie, że szybciej (aka
Od: " " <f...@g...pl>
slawek <s...@h...pl> napisał(a):
>
> Użytkownik "Roman W" <b...@g...pl> napisał w wiadomości grup
> dyskusyjnych:28251389.0.1331028057478.JavaMail.geo-d
iscussion-
forums@vbpw16...
> > No to przeciez 1ms to jest rzad wielkosci rozdzielczosci zegara
> > systemowego. Nic dziwnego, ze masz duzy narzut. Czemu sie upierasz, zeby
> > operowac na tak malych kawalkach?
>
> Bo każdy większy kawałek jest powiązany związkiem przyczynowo-skutkowym.
> Tzn. te "małe kawałki" nie są i dlatego można je liczyć równolegle. A te
> "większe" są już od siebie zależne - i dlatego muszą być liczone
> sekwencyjnie.
>
oddzielne wątki nie są od tego by zrównoleglac hiperdrobne rzeczy
- narobiles zamieszania nie kojarzac podstawowych faktów - (sam
co prawda nie mam poki co doswiadczenia w praktycznym MT )
- mysle ze zrownoleglanie na odzielnych watkach to gdzies tak od
skali czasu pojedynczej ramki (ok 20 ms), najlepiej by bylo utrafiac
w windowsowe slice i samemu oddawac czas do windowsowej pompy
by uniknac wywlaszczania kawalkow
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
74. Data: 2012-03-06 18:10:02
Temat: Re: OpenMP - pewnie, że szybciej (aka
Od: " " <f...@g...pl>
slawek <s...@h...pl> napisał(a):
>
> Użytkownik "Roman W" <b...@g...pl> napisał w wiadomości grup
> dyskusyjnych:28251389.0.1331028057478.JavaMail.geo-d
iscussion-
forums@vbpw16...
> > No to przeciez 1ms to jest rzad wielkosci rozdzielczosci zegara
> > systemowego. Nic dziwnego, ze masz duzy narzut. Czemu sie upierasz, zeby
> > operowac na tak malych kawalkach?
>
> Bo każdy większy kawałek jest powiązany związkiem przyczynowo-skutkowym.
> Tzn. te "małe kawałki" nie są i dlatego można je liczyć równolegle. A te
> "większe" są już od siebie zależne - i dlatego muszą być liczone
> sekwencyjnie.
>
oddzielne wątki nie są od tego by zrównoleglac hiperdrobne rzeczy
- narobiles zamieszania nie kojarzac podstawowych faktów - (sam
co prawda nie mam poki co doswiadczenia w praktycznym MT )
- mysle ze zrownoleglanie na odzielnych watkach to gdzies tak od
skali czasu pojedynczej ramki (ok 20 ms), najlepiej by bylo utrafiac
w windowsowe slice i samemu oddawac czas do windowsowej pompy
by uniknac wywlaszczania kawalkow
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
75. Data: 2012-03-06 20:50:29
Temat: Re: OpenMP - pewnie, że szybciej (aka "zagadka" rozwiązana)
Od: Roman W <b...@g...pl>
On Tuesday, March 6, 2012 5:43:51 PM UTC, slawek wrote:
> Użytkownik "Roman W" <b...@g...pl> napisał w wiadomości grup
> dyskusyjnych:28251389.0.1331028057478.JavaMail.geo-d
iscussion-forums@vbpw16...
> > No to przeciez 1ms to jest rzad wielkosci rozdzielczosci zegara
> > systemowego. Nic dziwnego, ze masz duzy narzut. Czemu sie upierasz, zeby
> > operowac na tak malych kawalkach?
>
> Bo każdy większy kawałek jest powiązany związkiem przyczynowo-skutkowym.
> Tzn. te "małe kawałki" nie są i dlatego można je liczyć równolegle. A te
> "większe" są już od siebie zależne - i dlatego muszą być liczone
> sekwencyjnie.
To masz przechlapane, jak to mowia.
RW
-
76. Data: 2012-03-07 15:19:18
Temat: Re: OpenMP - pewnie, że szybciej (aka "zagadka" rozwiązana)
Od: "slawek" <s...@h...pl>
Użytkownik "Roman W" <b...@g...pl> napisał w wiadomości grup
dyskusyjnych:20179800.2877.1331067029449.JavaMail.ge
o-discussion-forums@vbze11...
> To masz przechlapane, jak to mowia.
Aniebo...
...mogę spokojnie napisać, że "zastosowanie algorytmu równoległego nie
przyspiesza obliczeń." I zostać przy poprzednich wersjach
(nie-równoległych).
-
77. Data: 2012-03-08 17:58:21
Temat: Re: OpenMP - pewnie, że szybciej (aka "zagadka" rozwiązana)
Od: Karol Y <k...@o...pl>
>> To masz przechlapane, jak to mowia.
>
> Aniebo...
>
> ...mogę spokojnie napisać, że "zastosowanie algorytmu równoległego nie
> przyspiesza obliczeń." I zostać przy poprzednich wersjach
> (nie-równoległych).
Jeżeli w Twoim słowniku są takie słowa jak "nie umiem", "nie dam rady",
"nie potrafię"...
--
Mateusz Bogusz
-
78. Data: 2012-03-10 11:25:28
Temat: Re: OpenMP - pewnie, że szybciej (aka "zagadka" rozwiązana)
Od: "slawek" <s...@h...pl>
Użytkownik "Karol Y" <k...@o...pl> napisał w wiadomości grup
dyskusyjnych:jjas02$qe5$...@n...news.atman.pl...
> Jeżeli w Twoim słowniku są takie słowa jak "nie umiem", "nie dam rady",
> "nie potrafię"...
Jak będziesz już trochę starszy, to w _twoim_ słowniku pojawią się takie
zwroty jak: "nie warto, bo i tak nikt za to nie zapłaci"; "nie będziemy tego
robić, bo przekroczylibyśmy termin"; "nie trzeba, bo to co już mamy
wystarczy"; "nie zajmujemy się tym, bo zakończyliśmy ten projekt".
W pewnym wieku, jak się jest młodym (i naiwnym), to wydaje się ludziom, że
dadzą radę zrobić wszystko... i to jeszcze w tym tygodniu. Z czego to
wynika?
Po pierwsze, będąc leszczem nie wie się, jak głęboki jest problem. Dajmy na
to "zainstalować system". Ok. mniej niż kwadrans... dla leszcza. A dla
administratora w BARDZO DUŻEJ FIRMIE? Toż bez przetargu się nie obejdzie...
a potem wdrożenie tego na wszystkich 15 tysiącach komputerów... i to jeszcze
pamiętając że tylko 90% to desktopy. (A.L. zaraz by dopisał "15 tysięcy
komputerów to jest raczej mała firma" ;) )
Po drugie, czas. Będąc leszczem ma się czas. Całe życie. A potem... a potem
ma się np. guza. I pół roku na uporządkowanie spraw. W mniej skrajnych
przypadkach - trzeba ten czas dzielić - rodzina, praca, przyjaciele, hobby,
teściowie, praca, usenet, sekretarka, pies, kot, zięć.
Po trzecie, będąc leszczem robi się głupie rzeczy. Na przykład próbuje
wyrywać panienki na to jakim się to nie jest hackerem. (To akurat przejaw
SKRAJNEJ głupoty, bo wiadomo iż jest 1001 lepszych i skuteczniejszych,
sprawdzonych, sposobów.) Z biegiem lat jednak człowiek mądrzeje i coraz
trudniej go podpuścić na stary numerek "jestem Kasia i nie wiem jak napisać
program zadany w szkole" (nota bene zawsze w takiej historyjce jest
nauczyciel - nigdy nie nauczycielka informatyki).
Po czwarte, im dużej się żyje - im jest się dojrzalszym - tym mniej jest
prawdopodobne iż środek do osiągnięcia celu będzie się mylić z celem samym w
sobie. Innymi słowy, jeżeli mam postawiony do rozwiązania problem i ten
problem mogę rozwiązać pisząc pewien program, to mnóstwo szczegółów
związanych z programem jest po prostu nieistotne. Nie jest ważne, czy do
będzie program działający równolegle z OpenMP - czy obrzydliwie szeregowo
(ale za to na PBS). Ważne jest natomiast, aby dawał rezultaty w czasie
krótszym niż 1 tydzień na sprzęcie jaki rzeczywiście mam.
Podsumowując: OpenMP nie jest zbyt dobre do zrównoleglania prostych obliczeń
trwających mniej niż 1 ms per wątek. Wniosek: w danej sytuacji algorytm
szeregowy jest lepszy niż algorytm równoległy. Oczywiście wersja szeregowa
algorytmu równoległego jest jeszcze gorsza od obu. BTW, obejrzałem sobie
Thurst'a i... - to niezupełnie ta bajka - jeżeli już to CUDA BLAS/LAPACK.
-
79. Data: 2012-03-11 07:54:43
Temat: Re: OpenMP - pewnie, że szybciej (aka "zagadka" rozwiązana)
Od: Karol Y <k...@o...pl>
> Jak będziesz już trochę starszy, to w _twoim_ słowniku pojawią się takie
> zwroty jak: "nie warto, bo i tak nikt za to nie zapłaci"; "nie będziemy
> tego robić, bo przekroczylibyśmy termin"; "nie trzeba, bo to co już mamy
> wystarczy"; "nie zajmujemy się tym, bo zakończyliśmy ten projekt".
Jakby było tak nie warto, to byś nie drążył wątku o ponad 80 postach.
> W pewnym wieku, jak się jest młodym (i naiwnym), to wydaje się ludziom,
> że dadzą radę zrobić wszystko... i to jeszcze w tym tygodniu. Z czego to
> wynika?
Nie wiem, za stary już jestem ;-)
> Podsumowując: OpenMP nie jest zbyt dobre do zrównoleglania prostych
> obliczeń trwających mniej niż 1 ms per wątek. Wniosek: w danej sytuacji
> algorytm szeregowy jest lepszy niż algorytm równoległy. Oczywiście
> wersja szeregowa algorytmu równoległego jest jeszcze gorsza od obu. BTW,
> obejrzałem sobie Thurst'a i... - to niezupełnie ta bajka - jeżeli już to
> CUDA BLAS/LAPACK.
Nic nie jest dobre do tego. Jak jedna pętla trwa mniej to należy problem
zaadresować szerzej. Utworzenie wątku kosztuje, procesu jeszcze więcej.
No to wymyślili pule. Ale nawet tutaj przydzielanie kodu i przerzucanie
argumentów między kontekstami też kosztuje. Zrównolegla się możliwie
największe kroki, które da się wykonywać jednocześnie. Jeżeli napiszesz,
że to właśnie ta pętelka, to albo podzielić ilość kroków na ilość
wątków* i każdemu dać swoją część albo jednak trzeba rozważyć
zrównoleglenie np. dwóch zadań niż kroków jednego zadania - suma
summarum wyjdzie sensowniej.
* jeżeli właśnie to robiłeś (nie znam C i nie wiem jak deklaracje OpenMP
są interpretowane), to najwyraźniej synchronizacja albo wchodzenie do
ogródka sąsiada miałeś zwalone.
--
Mateusz Bogusz
-
80. Data: 2012-03-12 17:44:14
Temat: Re: OpenMP - pewnie, że szybciej (aka
Od: " " <f...@g...pl>
slawek <s...@h...pl> napisał(a):
>
> Użytkownik "Karol Y" <k...@o...pl> napisał w wiadomości grup
> dyskusyjnych:jjas02$qe5$...@n...news.atman.pl...
> > Jeżeli w Twoim słowniku są takie słowa jak "nie umiem", "nie dam rady",
> > "nie potrafię"...
>
> Jak będziesz już trochę starszy, to w _twoim_ słowniku pojawią się takie
> zwroty jak: "nie warto, bo i tak nikt za to nie zapłaci"; "nie będziemy
tego
> robić, bo przekroczylibyśmy termin"; "nie trzeba, bo to co już mamy
> wystarczy"; "nie zajmujemy się tym, bo zakończyliśmy ten projekt".
>
> W pewnym wieku, jak się jest młodym (i naiwnym), to wydaje się ludziom, że
> dadzą radę zrobić wszystko... i to jeszcze w tym tygodniu. Z czego to
> wynika?
>
> Po pierwsze, będąc leszczem nie wie się, jak głęboki jest problem. Dajmy na
> to "zainstalować system". Ok. mniej niż kwadrans... dla leszcza. A dla
> administratora w BARDZO DUŻEJ FIRMIE? Toż bez przetargu się nie obejdzie...
> a potem wdrożenie tego na wszystkich 15 tysiącach komputerów... i to
jeszcze
> pamiętając że tylko 90% to desktopy. (A.L. zaraz by dopisał "15 tysięcy
> komputerów to jest raczej mała firma" ;) )
>
> Po drugie, czas. Będąc leszczem ma się czas. Całe życie. A potem... a potem
> ma się np. guza. I pół roku na uporządkowanie spraw. W mniej skrajnych
> przypadkach - trzeba ten czas dzielić - rodzina, praca, przyjaciele, hobby,
> teściowie, praca, usenet, sekretarka, pies, kot, zięć.
>
> Po trzecie, będąc leszczem robi się głupie rzeczy. Na przykład próbuje
> wyrywać panienki na to jakim się to nie jest hackerem. (To akurat przejaw
> SKRAJNEJ głupoty, bo wiadomo iż jest 1001 lepszych i skuteczniejszych,
> sprawdzonych, sposobów.) Z biegiem lat jednak człowiek mądrzeje i coraz
> trudniej go podpuścić na stary numerek "jestem Kasia i nie wiem jak napisać
> program zadany w szkole" (nota bene zawsze w takiej historyjce jest
> nauczyciel - nigdy nie nauczycielka informatyki).
>
> Po czwarte, im dużej się żyje - im jest się dojrzalszym - tym mniej jest
> prawdopodobne iż środek do osiągnięcia celu będzie się mylić z celem samym
w
> sobie. Innymi słowy, jeżeli mam postawiony do rozwiązania problem i ten
> problem mogę rozwiązać pisząc pewien program, to mnóstwo szczegółów
> związanych z programem jest po prostu nieistotne. Nie jest ważne, czy do
> będzie program działający równolegle z OpenMP - czy obrzydliwie szeregowo
> (ale za to na PBS). Ważne jest natomiast, aby dawał rezultaty w czasie
> krótszym niż 1 tydzień na sprzęcie jaki rzeczywiście mam.
>
> Podsumowując: OpenMP nie jest zbyt dobre do zrównoleglania prostych
obliczeń
> trwających mniej niż 1 ms per wątek. Wniosek: w danej sytuacji algorytm
> szeregowy jest lepszy niż algorytm równoległy. Oczywiście wersja szeregowa
> algorytmu równoległego jest jeszcze gorsza od obu. BTW, obejrzałem sobie
> Thurst'a i... - to niezupełnie ta bajka - jeżeli już to CUDA BLAS/LAPACK.
>
>
podzielam humanistyczny smutek (zwiazany z dlugim czasem
uczenia sie w programowaniu i siedzenia przed kompem) nie
bardzo jednak rozumiem ten kawalek o dziewczynach (wyrywaniu
dziewczyn) - sa to poniekad antagonistyczne zjawiska,
(choc fenomenalnie sie wlasnie uzupelniaja)
z dziewcznami (chocby traktujacymi cie jak siostry) bywa wesolo
- sam jako kawaler (jako ze 'rrr' wystawila mnie do wiatru)
pomieszkuje czesto na stancjach i albo jest przygnebiajaco
i smutno albo jest wesolo (ostatnio dlugo* mialem pecha i jest tylko
smutno - wykituje w tej programistycznej norze (rozumianej nie
fizayczne tylko jako sposob zycia - spedzania czasu ))
* to 'dlugo' jest naprawde smutne
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/