Poniższy opis ma na celu wprowadzenie do MAP : dać ogląd jego funkcjonalności i umożliwić szybkie rozpoczęcie korzystania z tego narzędzia. Aby lepiej zrozumieć możliwości i nabrać biegłości, trzeba samemu zacząć stosować w myśl "praktyka czyni mistrza".
MAP jest to profiler - stosujemy go w procesie optymalizacji, w celu poznania zachowania naszego kodu. Do procesu optymalizacji przystępujemy w momencie gdy posiadamy poprawnie działający (kompletny) program. Jego zastosowanie można rozbić na dwa kroki:
Wyniki zebrane przez MAP mogą pozwolić zlokalizować nam różne problemy dotyczące wydajności naszego kodu. Wymaga to naszej analizy i umiejętności wyciągania wniosków z zebranych wyników - program sam za nas niczego nie zrobi. Tyle i aż tyle.
Rozważmy przykładową aplikację, uruchamianą pod MPI:
mpiexec -n 4 ./mmult4_c.exe 1024
W celu utworzenia profilu wystarczy:
module add plgrid/tools/arm-forge
map --profile mpiexec -n 4 ./mmult4_c.exe 1024
Nastąpi wykonanie programu, po czym zostanie zapisany plik z profilem - o automatycznie wygenerowanej nazwie, z rozszerzeniem .map
na końcu. Jeśli chcemy samemu wybrać nazwę pliku z profilem, należy dodać opcję -o: "map --profile -o <nazwa-pliku> (...komenda...)
".
Zaleca się jednak, aby program był skompilowany z flagą -g; wtedy otrzyma się informacje o czasie spędzonym w poszczególnym częściach kodu - będą one bardziej przydatne. Oprócz tego, niektóre optymalizację (inlinowanie funkcji, nie zapisywanie ramki stosu) może spowodować nieczytelne wyniki. W takim wypadku warto spróbować kompilację z "-fno-omit-frame-pointer"
W celu obejrzenia profilu wystarczy:
map mmult4_c_4p_1n_2020-01-21_17-58.map
Otworzy się wtedy właściwe GUI programu MAP, w którym będziemy mogli przeanalizować zebrane wyniki.
zalecenie: