-
Data: 2012-03-06 02:27:10
Temat: Re: OpenMP - pewnie, że szybciej (aka "zagadka" rozwiązana)
Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 02.03.2012 20:11, slawek wrote:
[...]
> /***************************************************
****************************************************
************************
>
> !
> ! Program test-omp
> !
> ! /openmp
> !
Zacytuję ioccc:
You can hide a semi truck in 300 lines of C.
Tu jest w 88 liniach C ukryty fiat 126p z 4 przyczepami - nic dziwnego,
że jedzie tak wolno.
Wyniki z mojego komputera (core i5) i gcc-4.6:
(wywaliłem niepotrzebną linijkę z getchar() na końcu)
$ gcc-4.6 -O3 kot.c
$ time ./a.out
CPU time = 8.100000
just for fun 91.999668
./a.out 8,12s user 0,01s system 99% cpu 8,128 total
$ gcc-4.6 -O3 --fast-math kot.c
$ time ./a.out
CPU time = 0.700000
just for fun 91.999668
./a.out 0,71s user 0,00s system 99% cpu 0,716 total
Ciekawi mogą zajrzeć do assemblera i zobaczyć, że gcc zastąpiło
dzielenie i 2 dodawania przez mnożenie i dodawanie. Psuje to pełną
zgodność ze standardem, ale generuje kod 11 razy szybszy.
$ gcc-4.6 -O3 --fast-math -fopenmp kot.c
$ time ./a.out
CPU time = 7.540000
just for fun 91.999668
./a.out 7,18s user 0,39s system 394% cpu 1,917 total
Interesujące - wszystkie rdzenie obciążone, dużo czasu w kernel mode a
czas wykonania ponad 2 razy dłuższy nie mówiąc o czasie procesora, który
jest 10 razy dłuższy.
Pora pobieżnie przejrzeć kod i zaaplikować patch:
- #pragma omp parallel
{
- #pragma omp for schedule(static,100)
for(i = 0; i < n; i++)
v2[i] = v1[i]/(c*c) + epsilon0 + pi;
setup(vec[i1]);
+ #pragma omp parallel for schedule(static,4096)
for(j = 0; j < m; j++)
{
$ gcc-4.6 -O3 --fast-math -fopenmp kod.c
$ time ./a.out
CPU time = 1.960000
just for fun 91.999668
./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:
1. NIE wykonywaniu TEGO SAMEGO kodu wielokrotnie (naprawdę się
zastanawiam, czy slawek nie umie czytać, czy zrobił to specjalnie(co
będzie pewnie utrzymywać)).
2. sensowny przydział bloków obliczeń
--
Pozdrawiam
Michoo
Następne wpisy z tego wątku
- 06.03.12 06:04 Karol Y
- 06.03.12 09:43 slawek
- 06.03.12 10:00 Roman W
- 06.03.12 12:52 Michoo
- 06.03.12 17:43 slawek
- 06.03.12 18:08
- 06.03.12 18:10
- 06.03.12 20:50 Roman W
- 07.03.12 15:19 slawek
- 08.03.12 17:58 Karol Y
- 10.03.12 11:25 slawek
- 11.03.12 07:54 Karol Y
- 12.03.12 17:44
- 13.03.12 07:36
Najnowsze wątki z tej grupy
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
Najnowsze wątki
- 2025-03-22 OT Silnik sie przegrzewa
- 2025-03-22 Przenoszenie przez wifi na nowego Androida
- 2025-03-22 Warszawa => Senior Account Manager <=
- 2025-03-22 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-03-22 Warszawa => Spedytor Międzynarodowy <=
- 2025-03-22 Warszawa => NMS System Administrator <=
- 2025-03-22 Warszawa => Analityk IT (projekty z obszaru telco) <=
- 2025-03-22 Orzeczenie TSUE
- 2025-03-22 Warszawa => Operations Support Systems (OSS) Team Leader <=
- 2025-03-22 Warszawa => Scrum Master <=
- 2025-03-22 Warszawa => Senior Account Manager <=
- 2025-03-22 Warszawa => BI Developer / Analityk BI <=
- 2025-03-22 Warszawa => IT Recruiter <=
- 2025-03-21 Zakaz wjazdu
- 2025-03-21 Nie zawsze wchodzi jedynka