eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingOpenMP - jest szybciej czy wolniej?Re: OpenMP - jest szybciej czy wolniej?
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: Edek Pienkowski <e...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: OpenMP - jest szybciej czy wolniej?
    Date: Sat, 3 Mar 2012 15:44:10 +0000 (UTC)
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 87
    Message-ID: <jite8a$dvn$17@inews.gazeta.pl>
    References: <4f4feb4d$0$1271$65785112@news.neostrada.pl>
    <jip3ao$9u9$1@node2.news.atman.pl>
    <4f501330$0$26703$65785112@news.neostrada.pl>
    <jip477$asl$1@node2.news.atman.pl>
    <4f50b4a4$0$26698$65785112@news.neostrada.pl>
    <jiqdm3$dvn$5@inews.gazeta.pl>
    <4f50bea4$0$1268$65785112@news.neostrada.pl>
    <jiqfeg$dvn$6@inews.gazeta.pl>
    <4f50c486$0$26685$65785112@news.neostrada.pl>
    <jiqhqe$dvn$9@inews.gazeta.pl> <jiqi0e$dvn$10@inews.gazeta.pl>
    <4f50ddac$0$1279$65785112@news.neostrada.pl>
    <jiqqlu$dvn$13@inews.gazeta.pl>
    <4f50f4d2$0$26694$65785112@news.neostrada.pl>
    <jiqt59$dvn$15@inews.gazeta.pl>
    <4f50fa41$0$26701$65785112@news.neostrada.pl>
    <jisdma$441$1@inews.gazeta.pl>
    <4f51eeb2$0$1213$65785112@news.neostrada.pl>
    NNTP-Posting-Host: 87.204.176.18
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1330789450 14327 87.204.176.18 (3 Mar 2012 15:44:10 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sat, 3 Mar 2012 15:44:10 +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:195945
    [ ukryj nagłówki ]

    Dnia Sat, 03 Mar 2012 11:13:08 +0100, slawek napisal:

    > Użytkownik <f...@N...gazeta.pl> napisał w wiadomości grup
    > dyskusyjnych:jisdma$441$...@i...gazeta.pl...
    >> mz wiadomo a przynajmniej bezpieczniej jest zakladac ze koszt
    >> owatkowienia moze byc spory, mi nie podoba sie watkowa rozrzutnosc,
    >
    > Właśnie w tym cały wic:
    >
    > 1. OpenMP "podręcznikowo" stosuje się tak:
    >
    > !$omp parallel do do i = 1,N
    > ! ... robota do wykonania
    > end do !$omp end parallel do

    OpenMP pozwala robić przede wszystkim coarse-grained, fine-grained może
    i też, ale twoje pętla jest "mikro". Zrób zewnętrzną/wewnętrzną.


    >
    > Mimo tej sztuczki - program nadal jest 2x _wolniejszy_ niż
    > jednowątkowy
    > (był nawet 35 razy wolniejszy). A powinien być 2x szybszy. Dziwne.

    No i będzie 2x szybszy. OpenMP nie zwalnia od myślenia. Chcesz coś
    prostszego: Thrust. Ma backend openMP, ma backend CUDA, używa
    się tak prosto, jak stl::transform, z Fortrana chyba też się da.
    Jak przy pomocy Thrust uda ci się spieprzyć, chylę czoła ;)

    >
    > 3. Myślę, że takie coś będzie szło od strony GPU - Intel "wsadził" GPU
    > do CPU - więc pewnie da się - tam powinno być około 1000 rdzeni... to
    > zupełnie nowy horyzont.

    GPU działa inaczej. Taka pętla będzie "memory-bound", za mało liczenia.
    W przypadku GPU mówi się o przepustowości, i generalnie przepustowość
    obliczeniowa karty jest rzędu 8-10 x większa niż przepustowość
    pamięci, do tego z pamięci trzeba odczytać i jeszcze zapisać wynik.
    Fakt, że GPU mają lepszą przepustowość pamięci niż procek, ale znowu:
    wszystko memory-bound musi mieć odpowiednie dostępy do pamięci, albo
    będzie strasznie wolne. Zobacz Thrust, oni zrobili to dobrze, sam z takim
    podejściem spieprzysz koncertowo i będzie jeszcze wolniejsze.

    Nie wiem, co Intel (i AMD) zrobią naprawdę mieszając CPU i GPU. Widziałem
    te architektury, ale nie powiem, żebym znał ich właściwości. Nie liczyłbym
    też na to, że 1000 rdzeni: rdzenie GPU są inne i nie są niezależne;
    no i rdzenie Intela to nie rdzenie Nvidii czy ATI. Ale mix może być fajny.

    >
    >> - tak naprawde zeby zobaczyc co sie dzieje trzebeby zobaczyc i umiec
    >> zrozumiec kod schedulera i okolic w kernelu - warto by to bylo po
    >> prostu obejrzec (zob watek jadro jadra)

    Ta, schedulera. W przypadku dwóch wątków na dwucorowym procku scheduler
    nie ma nic do gadania.

    >
    > 4. Znowu przypomnę - OpenMP miał być sposobem na
    > "łatwo-prosto-i-przyjemnie". Jak mam wgłębiać się w kod kernela - to
    > trudno mówić, że jest prosto.
    >
    > 5. Czyli podsumowując - cały ten OpenMP jest mocno do niczego -
    > wydajność SPADA - a w dodatku trzeba mocno uważać, aby zrobić działający
    > program.

    OpenMP jest fajny, RTFM. Trolujesz, czy serio narzekasz?

    >
    > 6. Punkt 5. odnosi się do "przeciętnego PC mającego 1 procesor z
    > niewieloma rdzeniami". Być może gdyby tych rdzeni było więcej... ale,
    > ale, na 16 też było kiepsko.

    Bo spieprzyłeś. Gcc wektoryzuje pętle. Jak masz task z 1 iteracją
    może mieć problem (też bym liczył na to, że sobie poradzi, ale
    nie wszystkie optymalizacje zawsze działają). Zresztą:

    weź Thrust. Jest zrobiony właśnie dla ludzi, którzy nie kumają co to GPU,
    co to OpenMP i chcą coś szybko policzyć. Przepisanie twojej pętli to
    5 minut, używa się tego bardzo prosto. Gratis będzie działało na GPU,
    ale nie oczekiwałbym wielkich zysków jeżeli nie masz takiego "nowego
    procka CPU/GPU, który by jeszcze wspierał CC 2.0", bo na GPU trzeba
    dane dodatkowo przekopiować i przekopiować wyniki, do tego pewne latency
    wykonania dochodzi (rzędu 1ms).

    Edek


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: