Rozpocznij pracę z narzędziem Intel Trace Analyzer i Collector

Rozpocznij pracę z analizatorem i modułem zbierającym Intel-Trace

Rozpocznij pracę z analizatorem i modułem zbierającym śledzenie Intel®

Skorzystaj z tego dokumentu Wprowadzenie i wstępnie zebranego śladu file aby przejść przez podstawową analizę wydajności MPI za pomocą narzędzia Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector pomaga zbadać efektywność wykorzystania interfejsu przesyłania komunikatów (MPI) i zidentyfikować gorące punkty komunikacji, wąskie gardła synchronizacji i równoważenie obciążenia. Więcej informacji o produkcie można znaleźć na stronie produktu Intel Trace Analyzer and Collector.

Pobierz narzędzie Intel Trace Analyzer i moduł zbierający

  • jako część zestawu narzędzi Intel® oneAPI HPC Toolkit
  • jako samodzielne narzędzie

Wymagania wstępne

  • Przed uruchomieniem Intel Trace Analyzer and Collector upewnij się, że zainstalowałeś najnowszą bibliotekę Intel® MPI i kompilator Intel® oneAPI DPC++/C++ lub kompilator Intel® Fortran.
  • Spowoduje to ustawienie wymaganych zmiennych środowiskowych dla kompilatorów, biblioteki Intel MPI oraz narzędzia Intel Trace Analyzer and Collector i można przystąpić do śledzenia aplikacji.
  • Aby uzyskać więcej informacji, zobacz: Wymagania systemowe zestawu narzędzi Intel® oneAPI HPC Toolkit.

Zrozum przepływ pracy

  1. Śledź swoją aplikację
  2. Przeanalizuj najbardziej aktywne funkcje MPI
  3. Zidentyfikuj problematyczne interakcje
  4. Popraw wydajność aplikacji, zastępując funkcję powodującą problem

Śledź swoją aplikację MPI

Wygeneruj ślad file do zbierania dzienników zdarzeń na potrzeby poniższej analizy zachowania aplikacji.

  1. Skonfiguruj środowisko do uruchamiania narzędzia Intel® Trace Analyzer i Collector, uruchamiając skrypt setvars z poziomu dyrektora instalacji oneAPI
    NOTATKA
    Domyślnie narzędzie Intel Trace Analyzer and Collector jest instalowane w katalogu /opt/intel/oneapi/itac dla systemu operacyjnego Linux* i w programie Program Files (x86)\Intel\oneAPI\itac\latest dla systemu operacyjnego Windows*.
    W systemie Linux:
    $ źródło /opt/intel/oneapi/setvars.sh
    W systemie Windows:
    „C:\Program Files (x86)\Intel\oneAPI\setvars.bat”
  2. Uruchom aplikację MPI i wygeneruj ślad za pomocą opcji -trace.
    W systemie Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    W systemie Windows:
    Skompiluj aplikację i zbierz ślad.
    W przypadku kompilatora Intel oneAPI DPC++/C++ uruchom:
    > mpiicc -trace poisson_sendrecv.single.c
    W przypadku kompilatora Intel Fortran uruchom:
    > mpiifort -trace poisson_sendrecv.single.f
    Ten byłyample generuje ślad (stf*) dla asample poisson_sendrcv.single aplikacja MPI
  3. Otwórz wygenerowany plik .stf file z Intel Trace Analyzer z Intel Trace Analyzer i Collector.
    W systemie Linux:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    W systemie Windows:
    analizator śledzenia poisson_sendrecv.single.stf

NOTATKA
Do celów testowych możesz pobrać wstępnie zebrany ślad file poisson_sendrecv.single.stf dla poissona użytego w tym dokumencie i otwórz go za pomocą narzędzia Intel Trace Analyzer and Collector.
Plik .stf file otwiera się na Stronie Podsumowanie view, który reprezentuje ogólne informacje o wydajności aplikacji:Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-1Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-2NOTATKA Aby uzyskać więcej informacji na temat funkcji Intel Trace Analyzer i Collector, zobacz Dowiedz się więcej.

Przeanalizuj najbardziej aktywne funkcje MPI

Analizuj zachowanie aplikacji MPI, znajdź wąskie gardła i zidentyfikuj serializację, aby znaleźć sposoby na poprawę wydajności aplikacji.

  1. Na Stronie Podsumowanie otwórz Oś Czasu Wydarzenia view klikając Kontynuuj > Wykresy > Oś czasu zdarzeń, aby uzyskać głębszą analizę najważniejszych funkcji MPI.
    Wykres przedstawia poszczególne działania procesu w czasie.
    Praca z aplikacją ma charakter iteracyjny, gdzie każda iteracja składa się z części obliczeniowej i komunikacji MPI.
  2. Zidentyfikuj pojedynczą iterację, na której chcesz się skupić, i powiększ ją, przeciągając myszką po wymaganym przedziale czasu:Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-3Ślad view pokazuje sekcję wybranego śladu. Wykres Oś czasu zdarzeń przedstawia zdarzenia, które były aktywne podczas wybranej iteracji.
    • Poziome słupki reprezentują procesy z funkcjami wywoływanymi w tych procesach.
    • Czarne linie wskazują komunikaty przesyłane pomiędzy procesami. Linie te łączą procesy wysyłania i odbierania.
    • Niebieskie linie przedstawiają operacje zbiorowe, takie jak operacje rozgłaszania lub ograniczania.
  3. Przejdź na Flat Profile zakładkę (A), aby przyjrzeć się bliżej funkcjom wykonywanym w wybranym przez Ciebie momencie czasu (wybranym na osi czasu zdarzenia.Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-4
  4. Rozgrupuj funkcje MPI, aby analizować aktywność procesów MPI w aplikacji.
    Aby to zrobić, kliknij prawym przyciskiem myszy Wszystkie procesy > Grupa MPI (B) w Flat Profile i wybierz opcję RozgrupujMPI. Ta operacja udostępnia poszczególne wywołania MPI.
  5. Przeanalizuj procesy komunikujące się ze swoimi bezpośrednimi sąsiadami za pomocą MPI_Sendrecv na początku iteracji. Na przykładampna:Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-5
    • A. W sample, wymiana danych MPI_Sendrecv ma wąskie gardło: proces nie wymienia danych z kolejnym sąsiadem, dopóki wymiana z poprzednim nie zostanie zakończona. Harmonogramy wydarzeń view przedstawia to wąskie gardło jako klatkę schodową.
    • B. MPI_Allreduce na końcu iteracji resynchronizuje wszystkie procesy; dlatego też bryła ta ma wygląd odwróconej klatki schodowej.
  6. Zidentyfikuj serializację za pomocą Function Profile i Wiadomość Profile views.
    • A. Otwórz jednocześnie wykresy:
      W Funkcji Profile wykresie, otwórz kartę Bilans obciążenia.
    • Przejdź do menu Wykresy, aby otworzyć Message Profile.
    • B. Na karcie Bilans obciążenia rozwiń MPI_Sendrecv i MPI_Allreduce. Równoważenie obciążenia wskazuje, że czas spędzony w MPI_Sendrecv rośnie wraz z numerem procesu, podczas gdy czas MPI_Allreduce maleje.
    • C. Sprawdź Message Profile Wykres w dół do prawego dolnego rogu.
      Kodowanie kolorami bloków wskazuje, że wiadomości podróżujące z wyższej rangi do niższej rangi potrzebują proporcjonalnie więcej czasu, podczas gdy wiadomości podróżujące z niższej rangi do wyższej rangi wykazują słaby parzysto-nieparzysty wzór:Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-6

Wyniki analizy porównawczej wskazują, że w aplikacji nie ma skomplikowanych wzorców wymiany, wymiana odbywa się jedynie z procesami sąsiednimi. Informacje te będą niezbędne do poprawy wydajności aplikacji poprzez zmianę komunikacji, aby zoptymalizować model komunikacji aplikacji.

Zidentyfikuj niezrównoważoną komunikację

Obejrzyj swoją aplikację w idealnych okolicznościach i porównaj oryginalny ślad file z wyidealizowanym w celu wyizolowania problematycznych interakcji.

  1. Stwórz wyidealizowany file:
    • A. Wybierz opcję Zaawansowane > Idealizacja lub kliknijPierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-7 Przycisk paska narzędzi (Idealizacja).
    • B. Sprawdź parametry idealizacji w oknie dialogowym Idealizacja (ideal traci file nazwa i zakres czasu konwersji).
    • C. Kliknij Start, aby wyidealizować swój ślad.
  2. Porównaj oryginalny ślad ze śladem wyidealizowanym:
    • A. Wybierz Zaawansowane > Diagram niewyważenia lub kliknij Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-8(Wykres niewyważenia) na pasku narzędzi.
    • B. W oknie dialogowym Diagram braku równowagi kliknij opcję Otwórz inny File , przejdź do wyidealizowanego śladu i wybierz go.
    • C. W oknie Wykres niewyważenia kliknij przycisk Tryb całkowity i wybierz Tryb awarii.

Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-9

Widać, że MPI_Sendrecv jest funkcją najbardziej czasochłonną. Wyświetlana jest masa niewyważenia
jasny kolor i stanowi około 10% dla funkcji MPI_Sendrecv. Jest to czas, jaki procesy spędzają na oczekiwaniu na siebie.

Popraw wydajność aplikacji, zmieniając komunikację

  1. Popraw wydajność aplikacji MPI, zmieniając komunikację blokującą na nieblokującą.
    W swoim kodzie zastąp serial MPI_Sendrcv komunikacją nieblokującą: MPI_Isend i MPI_Irecv. Na przykładample: Oryginalny fragment kodu:
    // wymiana granic
    unieważnij wymianę(para* p, siatka* gr){
    int i, j;
    MPI_Status status_100, status_200, status_300, status_400;
    // wyślij pierwszy wiersz
    MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD,
    &status_100);
    // wyślij ostatni wiersz
    MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->up, 200, MPI_COMM_WORLD);
    MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->down, 200, MPI_COMM_WORLD, &status_200);
    Skorzystaj z narzędzia porównawczego Intel Trace Analyzer view aby porównać serializowaną aplikację z poprawioną wersją
    // skopiuj lewą kolumnę do tablic tmp
    if(gr->lewo != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = prawy_kol[i]; right_col[i] = gr->x_new[i][gr->lcol];
    //wyślij w prawo
    MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
    if(gr->left != MPI_PROC_NULL)
    {
    MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->left, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = left_col[i];
    }
    }
    Zaktualizowany fragment kodu
    MPI_Request żądanie [7];
    // wyślij pierwszy wiersz
    MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD, &req[0]);
    MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD, &req[1]);
    …..
    MPI_Waitall(7, req, MPI_STATUSES_IGNORE);
    Po poprawieniu pojedyncza iteracja poprawionej aplikacji będzie wyglądać następująco, npampna:Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-10
  2. Skorzystaj z narzędzia porównawczego Intel Trace Analyzer view aby porównać serializowaną aplikację z poprawioną. Porównaj dwa ślady za pomocą porównania View, idę do View > Porównaj. Porównanie View wygląda podobnie do:Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-11W porównaniu Viewwidać, że korzystanie z komunikacji nieblokującej pomaga usunąć serializację i skrócić czas komunikacji procesów.
    NOTATKA Więcej informacji na temat wydajności aplikacji na poziomie węzła można znaleźć w dokumentacji odpowiednich narzędzi: Intel® VTune™ Profiler Analiza kodu MPI i analizowanie aplikacji Intel® MPI za pomocą programu Intel® Advisor.

Dowiedz się więcej

Zapoznaj się z poniższymi zasobami, aby uzyskać więcej informacji na temat narzędzia Intel Trace Analyzer i modułu zbierającego.Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-12Pierwsze kroki z analizatorem-i-kolektorem-Intel-Trace-rys.-13

Uwagi i zastrzeżenia

  • Technologie Intel mogą wymagać aktywacji sprzętu, oprogramowania lub usługi.
  • Żaden produkt ani komponent nie może być całkowicie bezpieczny.
  • Twoje koszty i wyniki mogą się różnić.
  • © Intel Corporation. Intel, logo Intel i inne znaki Intel są znakami towarowymi firmy Intel Corporation lub jej oddziałów. Inne nazwy i marki mogą być przedmiotem praw własności innych osób.
  • Niniejszy dokument nie udziela żadnej licencji (wyraźnej lub dorozumianej, na zasadzie estoppel lub w inny sposób) na jakiekolwiek prawa własności intelektualnej.
  • Opisane produkty mogą zawierać wady konstrukcyjne lub błędy znane jako errata, które mogą powodować odchylenie produktu od opublikowanych specyfikacji. Aktualne scharakteryzowane errata są dostępne na żądanie.
  • Firma Intel zrzeka się wszelkich wyraźnych i dorozumianych gwarancji, w tym między innymi dorozumianych gwarancji przydatności handlowej, przydatności do określonego celu i nienaruszalności, jak również wszelkich gwarancji wynikających z przebiegu działania, przebiegu transakcji lub użycia w handlu.

Dokumenty / Zasoby

intel Rozpocznij pracę z analizatorem śledzenia i modułem zbierającym Intel Trace [plik PDF] Instrukcja użytkownika
Rozpocznij korzystanie z narzędzia Intel Trace Analyzer i modułu zbierającego, Rozpocznij korzystanie z Intel, narzędzia Trace Analyzer i modułu zbierającego, Moduł zbierający

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *