04. Analiza wydajności
Narzędzia¶
Perf¶
podstawowe narzędzie do analizy wydajności w systemie operacyjnym Linux, ściśle powiązane z jądrem tego systemu. Umożliwia profilowanie aplikacji działających na CPU. Wspiera klasyczne procesory o architekturze x86, a także procesory Arm. Pozwala na analizę aplikacji wykorzystujących wielowątkowość. W pewnym stopniu może zostać wykorzystany do analizy aplikacji rozproszonych.
NVIDIA Nsight¶
zestaw narzędzi deweloperskich przeznaczonych do pracy z urządzeniami
GPU NVIDIA oraz wspomagających tworzenie oprogramowania wykorzystującego CUDA, a także OpenMP oraz
OpenACC. Z punktu
widzenia programisty aplikacji GPU najważniejszymi narzędziami są Nsight Systems oraz Nsight Compute służące do
analizy wydajności aplikacji, profilowania jej działania, oraz mierzenia wykorzystania zasobów
sprzętowych.
Intel VTune Profiler¶
kompleksowe narzędzie do analizy wydajności aplikacji. Przewidziany dla programów wykonywanych na procesorach Intel CPU oraz akceleratorach Intel GPU. Posiada również wsparcie dla FPGA. Dla innych procesorów działa w ograniczonym stopniu. Udostępnia szeroki wachlarz analiz różnego typu – od ogólnej oceny wydajności, przez profilowanie, do szczegółowych informacji o wykorzystaniu zasobów sprzętowych. Wspiera wiele technologii zrównoleglania obliczeń oraz różne języki programowania.
Linaro Forge¶
komercyjny pakiet przeznaczony do pracy z aplikacjami równoległymi, zarówno wielowątkowymi jak i rozproszonymi. Udostępnia dwa narzędzia do analizy wydajności: Linaro Performance Reports – do generowania ogólnych raportów dot. wydajności aplikacji jako całości, oraz Linaro MAP – profiler szczegółowo analizujący zachowanie aplikacji w czasie. W skład pakietu wchodzi również równoległy debugger (Linaro DDT). Posiada wsparcie zarówno dla klasycznych programów wykonywanych na CPU jak i akcelerowanych na GPU (model CUDA).
Tutoriale¶
Podstawy wykorzystania narzędzi NVIDIA Nsight¶
Tutorial pokazuje podstawy korzystania z narzędzi Nsight Systems oraz Nsight Compute w celu analizy wydajności prostego programu CUDA. Jako przykład służy program wykonujący konwolucję obrazu, rozpoznawanie krawędzi, przy użyciu karty GPU Nvidia.