Tak więc otrzymaliśmy zlecenie na skompilowanie kodu (powinniśmy traktować go jako czarną skrzynkę), używając różnych flag optymalizujących kompilator intel (-O1 i -O3) oraz flagi wektoryzacja (-xhost i -no-Vec) i obserwować zmiany w:Efekt optymalizacji kompilatora na FLOP i L2/L3 Miss Rate przy użyciu PAPI
- czas realizacji
- zmiennoprzecinkowe operacje (FPOs)
- L2 i L3 Cache Miss Rate
Po wykonaniu tych optymalizacji zauważyliśmy spadek czasu wykonania, którego należało się spodziewać, biorąc pod uwagę wszystkie zmiany, jakie kompilator wprowadza do kodu w celu zwiększenia wydajności. Zauważyliśmy jednak spadek liczby FPO, które, choć rozumiemy, że to dobrze, nie jesteśmy pewni, dlaczego tak się stało. Ponadto zauważyliśmy (i nie możemy wyjaśnić) wzrost L2 Cache Miss Rate (rosnący wraz ze wzrostem poziomu optymalizacji), ale bez znaczącego zwiększenia dostępu do pamięci podręcznej i prawie żadnych zmian na poziomie L3.
Bez użycia wektoryzacji lub optymalizacji uzyskano najlepszy wynik pod względem współczynnika Miss Cache L2 i zastanawialiśmy się, czy moglibyśmy dać nam pewien wgląd, a także obsługiwaną dokumentację, literaturę i zasoby, z których możemy skorzystać pogłębić naszą wiedzę na ten temat.
Dziękuję.
edit: Opcje kompilatora stosowane są:
- O0 -no-vec (Najwyższy czas realizacji, Najniższe L2 Cache) Misses
- O1 (mniej czasu realizacji, Wyższe L2 Cache) Misses
- O3 (Nawet mniej czasu realizacji, jeszcze wyższy L2 Cache) Misses
- xhost (ta sama kolejność -O3 czasu wykonania, najwyższy L2 Cache) pannami
Aktualizacja:
Chociaż występuje niewielki spadek liczby dostępów do pamięci podręcznej L2, istnieje ogromny wzrost rzeczywistych braków.
Z -0O -no-vec
ścienny zegar w usecs: 13.957.075
- L2 cache chybienia: 207.460.564
- cache L2 odwiedziny: 1.476.540.355
- L2 cache miss stawka: 0,140504
- Brak pamięci podręcznej L3: 24,841,999
- Dostęp do pamięci podręcznej L3: 207,460,564
- Współczynnik miss pamięci podręcznej L3: 0.119743
Z -xhost
ścienny zegar w czasie usecs: 4,465,243
- L2 cache strzela: 547.305.377
- cache L2 dostępów: 1.051.949.467
- L2 cache miss stawka: 0,520277
- L3 cache chybienia: 86919153
- L3 cach e dostępów: 547.305.377
- L3 szybkość cache miss: 0,158813
Czy możesz przekazać nam kompilator i * wszystkie * opcje przekazane? Poza tym, co do tej pory myślałeś? – edmz
Czy spojrzałeś na wygenerowany kod zespołu (np. Z flagą 'gcc -Wall -fverbose-asm -S' i optymalizacją)? –
Możesz spojrzeć na kod źródłowy kompilatora. –