eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingOpenMP - jest szybciej czy wolniej?
Ilość wypowiedzi w tym wątku: 81

  • 11. Data: 2012-03-02 12:12:57
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: "slawek" <s...@h...pl>


    Użytkownik "Roman W" <b...@g...pl> napisał w wiadomości grup
    dyskusyjnych:8479760.53.1330651071927.JavaMail.geo-d
    iscussion-forums@vbux23...
    > Programowanie wielowatkowe to nie jest magiczny sposob na zwiekszenie
    > wydajnosci.

    Programowanie w ogóle nie ma wiele wspólnego z magią.

    Jednak OpenMP wymyślono właśnie po to, aby programy liczyły szybciej. I
    jeżeli "podręcznikowy" przykład użycia OpenMP działa jednak wolniej - to
    chyba coś jest źle z tym OpenMP (lub jego implementacją). Ok, OpenMP to
    raczej pod mainframe (tak, trzeba będzie sprawdzić na klastrze, takim nieco
    większym), ale niegłupio byłoby np. mieć program liczący 8 razy szybciej na
    "zwykłym PC" (SSE daje 2x, czterordzeniowiec daje 4x). Aha, oczywiście jest
    jeszcze GPU (bardzo sensownie byłoby go użyć), ale wymagałoby to
    "zasadniczej przeróbki programu" - no i przywiązałoby go to do konkretnego
    hardware (co też jest w planach).

    Inaczej - masz zaopatrywać 20 dużych hipermarketów. I teraz ktoś ci mówi:
    "kupienie tuzina ciągników siodłowych z naczepami to zły pomysł na
    zwiększenie wydajności, WIĘCEJ I SZYBCIEJ przewieziesz jednym fiacikiem
    szwagra". Sorry, ale właśnie coś takiego napisałeś - tyle że o programach
    współbieżnych.



  • 12. Data: 2012-03-02 12:12:58
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: Arkadiusz Dymek <a...@n...bedzie>

    W dniu 3/2/2012 1:03 PM, slawek wrote:
    >

    > Gdzieś jest błąd. I oczywiście jest narzut na tworzenie wątków (200
    > tysięcy razy są tworzone), ale: 1. tak to się w OpenMP robi
    > "podręcznikowo"; 2. ten narzut jest łapany przez profiler jako całkiem
    > nieduży i akceptowalny.

    Tak z głupia frant, bo ani OpenMP, ani tego kompilatora nie znam, ale
    liczysz czas wersji release, a nie debug?

    Pozdrawiam,
    Arkadesh


  • 13. Data: 2012-03-02 12:16:03
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: Edek Pienkowski <e...@g...com>

    Dnia Fri, 02 Mar 2012 12:53:09 +0100, slawek napisal:

    > Użytkownik "Karol Y" <k...@o...pl> napisał w wiadomości grup
    > dyskusyjnych:jip477$asl$...@n...news.atman.pl...
    >> Nie wiem jak zbudowany jest OpenMP, ale zapewne takie rzeczy jak pula
    >> wątków, a nie tworzenie ich za każdym razem używa. To co pozostaje, to
    >> w takim razie synchronizacja / komunikacja między wątkami. Tutaj masz
    >> wszystko dobrze?
    >
    > OpenMP jest prosty jak konstrukcja cepa. Wystarczy wstawić pętlę w
    > "nawiasy"

    To jak udało ci się to spieprzyć? Serio, chcesz wiedzieć, dlaczego twój
    kod chodzi wolno, to się podziel. To nie OpenMP jest spieprzony.

    Edek


  • 14. Data: 2012-03-02 12:28:18
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: "slawek" <s...@h...pl>


    Użytkownik "Arkadiusz Dymek" <a...@n...bedzie> napisał w wiadomości grup
    dyskusyjnych:4f50b94c$...@n...home.net.pl...
    > Tak z głupia frant, bo ani OpenMP, ani tego kompilatora nie znam, ale
    > liczysz czas wersji release, a nie debug?

    Kompilator to "tak naprawdę" GCC (4.6 jak pamiętam) - MinGW.

    Z tymi samymi ustawieniami, raz z -fopenmp program.f95, a raz z samym
    program.f95

    gfortran -Wall -O3 -Ofast -floop-interchange -floop-strip-mine -floop-block
    -fgraphite-identity -floop-flatten -floop-parallelize-all -ftree-loop-if-convert
    -ftree-loop-distribution -ftree-loop-im -ftracer -funroll-loops -funroll-all-loops
    -fvariable-expansion-in-unroller -ffast-math -fassociative-math -freciprocal-math
    -ftree-vectorize -ftree-vectorizer-verbose=5 -msse2 -funswitch-loops %1 %2
    %3 %4 %5

    Gdy idzie pod profiler, to oczywiście dochodzi -pg do opcji, lecz...
    oczywiście tak samo dla OpenMP jak i bez.

    Co ciekawe - spodziewałbym się, że wersja z OpenMP będzie przyciążała CPU na
    2*100%, tymczasem tak nie jest, może po 30% na każdym rdzeniu.

    Natomiast gdy odpali się dwie instancje wersji jednordzeniowej, to
    rzeczywiście jest 99% na każdym rdzeniu.




  • 15. Data: 2012-03-02 12:35:50
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: "slawek" <s...@h...pl>


    Użytkownik "Edek Pienkowski" <e...@g...com> napisał w
    wiadomości grup dyskusyjnych:jiqdm3$dvn$...@i...gazeta.pl...
    > To jak udało ci się to spieprzyć? Serio, chcesz wiedzieć, dlaczego twój
    > kod chodzi wolno, to się podziel. To nie OpenMP jest spieprzony.

    Ale tam w pętli nie ma nic szczególnego - po prostu

    b(i) = bardzo długie wyrażenie z a(i) i półtuzinem stałych różnych

    Ty twierdzisz, że to nie OpenMP. Ok. Ale OpenMP to "teoria". Praktyka jest
    jednak taka jaka jest - być może winna jest biblioteka pthreads, być może
    winne są Windows, a być może coś nie pasuje procesorowi. Fakt jest faktem -
    wersja z OpenMP muli się niesamowicie. Choć według profilera jest szybsza 2x
    (tak jak powinna być).

    Więc co się naprawdę dzieje? Wiesz? Nie wiesz?! Aha, nie wiesz i tylko
    spamujesz...



  • 16. Data: 2012-03-02 12:46:08
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: Edek Pienkowski <e...@g...com>

    Dnia Fri, 02 Mar 2012 13:35:50 +0100, slawek napisal:

    > Użytkownik "Edek Pienkowski" <e...@g...com> napisał w
    > wiadomości grup dyskusyjnych:jiqdm3$dvn$...@i...gazeta.pl...
    >> To jak udało ci się to spieprzyć? Serio, chcesz wiedzieć, dlaczego twój
    >> kod chodzi wolno, to się podziel. To nie OpenMP jest spieprzony.
    >
    > Ale tam w pętli nie ma nic szczególnego - po prostu
    >
    > b(i) = bardzo długie wyrażenie z a(i) i półtuzinem stałych różnych

    Przypuszczam, że jest to coś, na co nie zwróciłeś uwagi. Skoro
    twierdzisz, że nie ma tam nic złego, to albo faktycznie nie ma
    i wszystko hula, albo jednak jest, ale ty tego nie widzisz.

    >
    > Ty twierdzisz, że to nie OpenMP. Ok. Ale OpenMP to "teoria". Praktyka
    > jest jednak taka jaka jest - być może winna jest biblioteka pthreads,
    > być może winne są Windows, a być może coś nie pasuje procesorowi. Fakt
    > jest faktem -
    > wersja z OpenMP muli się niesamowicie. Choć według profilera jest
    > szybsza 2x (tak jak powinna być).

    Tworzenie wątków na XP jest relatywnie drogie, ale pisałeś, że na linuxie
    jest to samo.

    >
    > Więc co się naprawdę dzieje? Wiesz? Nie wiesz?! Aha, nie wiesz i tylko
    > spamujesz...

    Nie wiem, bo mało informacji udzielasz. Jak będziesz cały czas
    powtarzał "nic złego tam nie ma" to nic z tego nie będzie. Fortrana
    nie używałem już dość długo, ale może zrozumiem, albo kto inny
    zrozumie.

    Edek


  • 17. Data: 2012-03-02 12:52:27
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: Edek Pienkowski <e...@g...com>

    Dnia Fri, 02 Mar 2012 13:28:18 +0100, slawek napisal:

    > Użytkownik "Arkadiusz Dymek" <a...@n...bedzie> napisał w wiadomości
    > grup dyskusyjnych:4f50b94c$...@n...home.net.pl...
    >> Tak z głupia frant, bo ani OpenMP, ani tego kompilatora nie znam, ale
    >> liczysz czas wersji release, a nie debug?
    >
    > Kompilator to "tak naprawdę" GCC (4.6 jak pamiętam) - MinGW.
    >
    > Z tymi samymi ustawieniami, raz z -fopenmp program.f95, a raz z samym
    > program.f95
    >
    > gfortran -Wall -O3 -Ofast -floop-interchange -floop-strip-mine
    > -floop-block -fgraphite-identity -floop-flatten -floop-parallelize-all
    > -ftree-loop-if-convert
    > -ftree-loop-distribution -ftree-loop-im -ftracer -funroll-loops
    > -funroll-all-loops -fvariable-expansion-in-unroller -ffast-math
    > -fassociative-math -freciprocal-math -ftree-vectorize
    > -ftree-vectorizer-verbose=5 -msse2 -funswitch-loops %1 %2
    > %3 %4 %5

    Wywal większość -fX, heurystyka gcc może być lepsza, a ty wymuszasz
    arbitralnie to, co sam uważasz za stosowne. Nie mówię o fast-math
    oczywiście.

    Edek


  • 18. Data: 2012-03-02 13:00:56
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: "slawek" <s...@h...pl>


    Użytkownik "Edek Pienkowski" <e...@g...com> napisał w
    wiadomości grup dyskusyjnych:jiqfeg$dvn$...@i...gazeta.pl...
    > Przypuszczam, że jest to coś, na co nie zwróciłeś uwagi. Skoro
    > twierdzisz, że nie ma tam nic złego, to albo faktycznie nie ma
    > i wszystko hula, albo jednak jest, ale ty tego nie widzisz.

    Nic tam nie ma takiego, ba! Mogę dać b(i) = a(i) + 1 i jest to samo.

    > Tworzenie wątków na XP jest relatywnie drogie, ale pisałeś, że na linuxie
    > jest to samo.

    Też myślałem że to to. Ale dalej zostaje zagadka dlaczego profiler
    "prawidłowo" pokazuje zysk na czasie... którego na prawdę nie ma.

    Tj. profilowanie daje czasy mniejsze o połowę dla dwóch wątków niż dla
    jednego - a taki zegarek na rękę ze wskazówkami - zupełnie coś przeciwnego
    (20 razy dłużej).

    Wygląda na to, że program dwuwątkowy... po prostu nie pracuje. Tzn. co
    chwila oddaje inicjatywę systemowi, a system robi coś innego. Czyli cpu-time
    jest mniejszy, a wall-time rośnie.




  • 19. Data: 2012-03-02 13:01:06
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: Paweł Kierski <n...@p...net>

    W dniu 2012-03-02 13:35, slawek pisze:
    >
    > Użytkownik "Edek Pienkowski" <e...@g...com> napisał w
    > wiadomości grup dyskusyjnych:jiqdm3$dvn$...@i...gazeta.pl...
    >> To jak udało ci się to spieprzyć? Serio, chcesz wiedzieć, dlaczego twój
    >> kod chodzi wolno, to się podziel. To nie OpenMP jest spieprzony.
    >
    > Ale tam w pętli nie ma nic szczególnego - po prostu
    >
    > b(i) = bardzo długie wyrażenie z a(i) i półtuzinem stałych różnych

    Zredukuj program do samej pętli zawierające b(i) = a(i)+a(i), puść
    w obu wersjach. Jeśli wyeliminujesz _wszystko_ inne, a problem będzie
    nadal, to można podejrzewać implementację OpenMP, system itp. Bez
    takiego testu, gdybym miał się zakładać, to obstawiałbym błąd w twoim
    kodzie (lub ogólniej - interakcje z innymi kawałkami kodu). Aha -
    sprawdź dla skrajnie różnych rozmiarów tablic w obu wersjach.

    [...]
    > Więc co się naprawdę dzieje? Wiesz? Nie wiesz?! Aha, nie wiesz i tylko
    > spamujesz...

    Sprawdź redukując maksymalnie problem. W ten sposób czegoś się dowiesz.

    --
    Paweł Kierski
    n...@p...net


  • 20. Data: 2012-03-02 13:02:48
    Temat: Re: OpenMP - jest szybciej czy wolniej?
    Od: Paweł Kierski <n...@p...net>

    W dniu 2012-03-02 14:00, slawek pisze:
    >
    > Użytkownik "Edek Pienkowski" <e...@g...com> napisał w
    > wiadomości grup dyskusyjnych:jiqfeg$dvn$...@i...gazeta.pl...
    >> Przypuszczam, że jest to coś, na co nie zwróciłeś uwagi. Skoro
    >> twierdzisz, że nie ma tam nic złego, to albo faktycznie nie ma
    >> i wszystko hula, albo jednak jest, ale ty tego nie widzisz.
    >
    > Nic tam nie ma takiego, ba! Mogę dać b(i) = a(i) + 1 i jest to samo.

    Obok napisałem, ale dla pewności - ten program to już tylko ta jedna
    pętla?

    [...]
    > Tj. profilowanie daje czasy mniejsze o połowę dla dwóch wątków niż dla
    > jednego - a taki zegarek na rękę ze wskazówkami - zupełnie coś
    > przeciwnego (20 razy dłużej).
    >
    > Wygląda na to, że program dwuwątkowy... po prostu nie pracuje. Tzn. co
    > chwila oddaje inicjatywę systemowi, a system robi coś innego. Czyli
    > cpu-time jest mniejszy, a wall-time rośnie.

    Zobacz obciążenie procesora w czasie wykonania obu wersji. Na Windows
    polecam Process Explorer i wykresy ogólne i per proces.

    --
    Paweł Kierski
    n...@p...net

strony : 1 . [ 2 ] . 3 ... 9


Szukaj w grupach

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: