Intel Trace Analizörü ve Toplayıcıyı Kullanmaya Başlayın

Intel-Trace-Analyzer-ve-Collector-ürününü Kullanmaya Başlayın

Intel® İz Analizörü ve Toplayıcıyı Kullanmaya Başlayın

Bu Başlangıç ​​belgesini ve önceden toplanmış bir izlemeyi kullanın file Intel® İz Analizörü ve Toplayıcı ile temel bir MPI performans analizini gözden geçirmek için.
Intel Trace Analizörü ve Toplayıcı, mesaj aktarma arayüzü (MPI) kullanım verimliliğinin araştırılmasına ve iletişim etkin noktalarının, senkronizasyon darboğazlarının ve yük dengelemenin belirlenmesine yardımcı olur. Ürün hakkında daha fazla bilgi için Intel Trace Analizörü ve Toplayıcı ürün sayfasına bakın.

Intel Trace Analizörünü ve Toplayıcısını İndirin

  • Intel® oneAPI HPC Araç Takımının bir parçası olarak
  • bağımsız bir araç olarak

Ön koşullar

  • Intel Trace analyzer and Collector'ı çalıştırmadan önce en son Intel® MPI Kitaplığı'nı ve Intel® oneAPI DPC++/C++ Derleyicisini veya Intel® Fortran Derleyicisini yüklediğinizden emin olun.
  • Bu, derleyiciler, Intel MPI Kitaplığı ve Intel Trace Analiz Edici ve Toplayıcı için gerekli ortam değişkenlerini ayarlar ve uygulamalarınızı izlemeye hazır olursunuz.
  • Daha fazla bilgi için bkz. Intel® oneAPI HPC Araç Seti Sistem Gereksinimleri.

İş Akışını Anlayın

  1. Başvurunuzu Takip Edin
  2. En aktif MPI işlevlerini analiz edin
  3. Sorunlu etkileşimleri tanımlayın
  4. Soruna neden olan işlevi değiştirerek uygulama performansınızı artırın

MPI Başvurunuzu Takip Edin

Bir iz oluştur file Aşağıdaki uygulama davranışı analizi için olay günlüklerini toplamak.

  1. OneAPI kurulum yöneticisinden setvars komut dosyasını çalıştırarak Intel® Trace Analizörü ve Toplayıcıyı başlatmak için ortamı ayarlayın
    NOT
    Varsayılan olarak Intel Trace Analizörü ve Toplayıcı, Linux* İşletim Sistemi için /opt/intel/oneapi/itac'a ve Program'a kuruludur. FileWindows* işletim sistemi için s (x86)\Intel\oneAPI\itac\latest.
    Linux'ta:
    $ kaynak /opt/intel/oneapi/setvars.sh
    Windows'ta:
    “C:\Program Files (x86)\Intel\oneAPI\setvars.bat”
  2. MPI uygulamanızı çalıştırın ve -trace seçeneğiyle bir izleme oluşturun.
    Linux'ta:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    Windows'ta:
    Uygulamayı derleyin ve izi toplayın.
    Intel oneAPI DPC++/C++ Derleyicisi için şunu çalıştırın:
    > mpiicc -trace poisson_sendrecv.single.c
    Intel Fortran Derleyicisi için şunu çalıştırın:
    > mpiifort -trace poisson_sendrecv.single.f
    Bu eskiampdosya aşağıdakiler için bir iz (stf*) oluşturur:ample poisson_sendrcv.single MPI uygulaması
  3. Oluşturulan .stf dosyasını açın file Intel Trace Analizörü ve Toplayıcı ile Intel Trace Analizörü ile.
    Linux'ta:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    Windows'ta:
    traceanalyzer poisson_sendrecv.single.stf

NOT
Test amacıyla önceden toplanmış bir izi indirebilirsiniz file Bu belgede kullanılan poisson için poisson_sendrecv.single.stf dosyasını açın ve bunu Intel Trace Analizörü ve Toplayıcı ile açın.
.stf file Özet Sayfasında açılır viewUygulama performansınızla ilgili genel bilgileri temsil eden:Intel-Trace-Analyzer-ve-Collector-fig-1 ile BaşlayınIntel-Trace-Analyzer-ve-Collector-fig-2 ile BaşlayınNOT Intel Trace Analizörü ve Toplayıcı işlevleri hakkında daha fazla bilgi için Daha Fazla Bilgi Edinin bölümüne bakın.

En Aktif MPI Fonksiyonlarını Analiz Edin

Uygulama performansını iyileştirmenin yollarını bulmak için bir MPI uygulama davranışını analiz edin, darboğazları bulun ve serileştirmeyi tanımlayın.

  1. Özet Sayfasından Etkinlik Zaman Çizelgesi'ni açın view En iyi MPI işlevlerinin derinlemesine analizi için Devam > Grafikler > Etkinlik Zaman Çizelgesi'ne tıklayarak.
    Grafik, zaman içindeki bireysel süreç etkinliklerini görüntüler.
    Uygulama çalışması yinelemelidir ve her yineleme bir hesaplama bölümünden ve MPI iletişiminden oluşur.
  2. Farenizi gereken zaman aralığının üzerine sürükleyerek odaklanmak ve yakınlaştırmak için tek bir yineleme belirleyin:Intel-Trace-Analyzer-ve-Collector-fig-3 ile Başlayınİz view seçtiğiniz iz içindeki bölümü gösterir. Etkinlik Zaman Çizelgesi grafiği, seçilen yineleme sırasında etkin olan etkinlikleri gösterir.
    • Yatay çubuklar, süreçleri, bu süreçlerde çağrılan işlevlerle temsil eder.
    • Siyah çizgiler işlemler arasında gönderilen mesajları gösterir. Bu hatlar gönderme ve alma süreçlerini birbirine bağlar.
    • Mavi çizgiler, yayınlama veya azaltma işlemleri gibi kolektif işlemleri temsil eder.
  3. Flat Pro'ya geçinfile (A) sekmesini kullanarak, bulunduğunuz zaman noktasında ( Etkinlik Zaman Çizelgesi'nde seçili) yürütülen işlevlere daha yakından bakabilirsiniz.Intel-Trace-Analyzer-ve-Collector-fig-4 ile Başlayın
  4. Uygulamanızdaki MPI süreç etkinliğini analiz etmek için MPI işlevlerinin grubunu çözün.
    Bunu yapmak için Flat Pro'da Tüm İşlemler > Grup MPI ( B) öğesine sağ tıklayın.file ve Grubu Çöz MPI'yı seçin. Bu işlem bireysel MPI çağrılarını ortaya çıkarır.
  5. Yinelemenin başlangıcında MPI_Sendrecv kullanarak doğrudan komşularıyla iletişim kuran süreçleri analiz edin. Eski içinamptarih:Intel-Trace-Analyzer-ve-Collector-fig-5 ile Başlayın
    • A. s'deampDosyada, MPI_Sendrecv veri alışverişinde bir darboğaz vardır: öncekiyle değişim tamamlanana kadar süreç bir sonraki komşusuyla veri alışverişinde bulunmaz. Etkinlik Zaman Çizelgeleri view bu darboğazı bir merdiven gibi gösteriyor.
    • B. Yinelemenin sonundaki MPI_Allreduce tüm süreçleri yeniden senkronize eder; bu bloğun ters merdiven görünümüne sahip olmasının nedeni budur.
  6. Function Pro'yu kullanarak serileştirmeyi tanımlayınfile ve Mesaj Profile views.
    • A. Grafikleri aynı anda açın:
      İşlev Pro'dafile grafiğinde Yük Dengesi sekmesini açın.
    • Bir Mesaj Pro'yu açmak için Grafikler menüsüne gidinfile.
    • B. Yük Dengesi sekmesinde MPI_Sendrecv ve MPI_Allreduce'u genişletin. Yük Dengeleme, MPI_Sendrecv'de harcanan sürenin işlem numarasıyla arttığını, MPI_Allreduce için ise sürenin azaldığını gösterir.
    • C. Mesaj Pro'yu inceleyinfile Grafiği sağ alt köşeye doğru indirin.
      Blokların renk kodlaması, daha yüksek bir seviyeden daha düşük bir seviyeye giden mesajların orantılı olarak daha fazla zamana ihtiyaç duyduğunu gösterirken, daha düşük bir seviyeden daha yüksek bir seviyeye giden mesajların zayıf bir çift-tek modeli ortaya çıkardığını gösterir:Intel-Trace-Analyzer-ve-Collector-fig-6 ile Başlayın

Karşılaştırmalı analizin sonuçları, uygulamada karmaşık değişim modellerinin olmadığını, değişimin yalnızca komşu süreçlerle gerçekleştirildiğini göstermektedir. Bilgiler, uygulamanın iletişim modelini optimize etmek amacıyla İletişimleri Değiştirerek Uygulama Performansınızı Artırın adımı için gerekli olacaktır.

Dengesiz İletişimi Belirleyin

Uygulamanızı ideal koşullar altında izleyin ve orijinal izi karşılaştırın file Sorunlu etkileşimleri izole etmek için idealleştirilmiş olanla.

  1. İdealize edilmiş bir ortam yaratın file:
    • A. Gelişmiş > İdealleştirme'yi seçin veyaIntel-Trace-Analyzer-ve-Collector-fig-7 ile Başlayın (İdealleştirme) araç çubuğu düğmesi.
    • B. İdealleştirme iletişim kutusundaki idealleştirme parametrelerini kontrol edin (ideal izleme file dönüşüm için ad ve zaman aralığı).
    • C. İzlemenizi idealleştirmek için Başlat'a tıklayın.
  2. Orijinal izi idealleştirilmiş iz ile karşılaştırın:
    • A. Gelişmiş > Dengesizlik Diyagramı'nı seçin veya Intel-Trace-Analyzer-ve-Collector-fig-8 ile Başlayın(Dengesizlik Diyagramı) araç çubuğu düğmesi.
    • B. Dengesizlik Diyagramı iletişim kutusunda Başka Birini Aç'a tıklayın. File düğmesine basın, idealleştirilmiş ize gidin ve onu seçin.
    • C. Dengesizlik Diyagramı penceresinde Toplam Mod düğmesine tıklayın ve Arıza Modu'nu seçin.

Intel-Trace-Analyzer-ve-Collector-fig-9 ile Başlayın

MPI_Sendrecv'in en çok zaman alan fonksiyon olduğunu görebilirsiniz. Dengesizlik ağırlığı şu şekilde görüntülenir:
açık renktedir ve MPI_Sendrecv işlevi için yaklaşık %10'u oluşturur. Bu, süreçlerin birbirini beklerken harcadığı süredir.

İletişimi Değiştirerek Uygulama Performansınızı Artırın

  1. Engellemeyi engellemeyen iletişimlere dönüştürerek MPI uygulamasının performansını artırın.
    Kodunuzda seri MPI_Sendrcv'yi engellemeyen iletişimle değiştirin: MPI_Isend ve MPI_Irecv. Eski içinample: Orijinal kod pasajı:
    // sınır değişimi
    geçersiz değişim(para* p, grid* gr){
    int i,j;
    MPI_Durum durum_100, durum_200, durum_300, durum_400;
    //ilk satırı aşağıya gönder
    MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->llow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD,
    &status_100);
    // son satırı gönder
    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);
    Intel Trace Analizörü Karşılaştırmasını Kullanın view serileştirilmiş uygulamayı revize edilen uygulamayla karşılaştırmak için
    // sol sütunu tmp dizilerine kopyala
    if(gr->left != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = sağ_sütun[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // sağa gönder
    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->llow+2, MPI_DOUBLE, gr->left, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->düşük+2; i++
    {
    gr->x_new[i][0] = left_col[i];
    }
    }
    Güncellenmiş kod pasajı
    MPI_Request isteği[7];
    //ilk satırı aşağıya gönder
    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);
    Düzeltildikten sonra revize edilen uygulamanın tek yinelemesi aşağıdaki gibi görünecektir.amptarih:Intel-Trace-Analyzer-ve-Collector-fig-10 ile Başlayın
  2. Intel Trace Analizörü Karşılaştırmasını Kullanın view Serileştirilmiş uygulamayı revize edilen uygulamayla karşılaştırmak için. Karşılaştırma yardımıyla iki izi karşılaştırın View, gidiyor View > Karşılaştır'ı seçin. Mukayese View şuna benziyor:Intel-Trace-Analyzer-ve-Collector-fig-11 ile BaşlayınKarşılaştırmada View, engellemesiz iletişim kullanmanın serileştirmeyi kaldırmaya ve süreçlerin iletişim süresini azaltmaya yardımcı olduğunu görebilirsiniz.
    NOT Uygulamanızın düğüm düzeyindeki performansı hakkında daha fazla bilgi için ilgili araçların belgelerine bakın: Intel® VTune™ Profiler MPI Kod Analizi ve Intel® Advisor'ı kullanarak Intel® MPI uygulamalarını analiz etme.

Daha fazla bilgi edin

Intel Trace Analizörü ve Toplayıcı hakkında daha fazla bilgi için aşağıdaki kaynakları keşfedin.Intel-Trace-Analyzer-ve-Collector-fig-12 ile BaşlayınIntel-Trace-Analyzer-ve-Collector-fig-13 ile Başlayın

Bildirimler ve Sorumluluk Reddi Beyanları

  • Intel teknolojileri, etkin donanım, yazılım veya hizmet etkinleştirmesi gerektirebilir.
  • Hiçbir ürün veya bileşen kesinlikle güvenli olamaz.
  • Maliyetleriniz ve sonuçlarınız değişebilir.
  • © Intel Şirketi. Intel, Intel logosu ve diğer Intel markaları Intel Corporation'ın veya yan kuruluşlarının ticari markalarıdır. Diğer isimler ve markaların başkalarının mülkiyetinde olduğu iddia edilebilir.
  • Bu belge ile herhangi bir fikri mülkiyet hakkına ilişkin hiçbir lisans (açık veya zımni, hak düşürücü veya başka türlü) verilmemektedir.
  • Açıklanan ürünler, ürünün yayınlanmış özelliklerden sapmasına neden olabilecek errata olarak bilinen tasarım kusurları veya hataları içerebilir. Güncel karakterize edilmiş erratalar talep üzerine mevcuttur.
  • Intel, satılabilirlik, belirli bir amaca uygunluk ve ihlal etmeme gibi zımni garantiler dahil ancak bunlarla sınırlı olmamak üzere açık ve zımni tüm garantilerin yanı sıra performansın gidişatı, iş yapma biçimi veya ticari kullanımdan kaynaklanan her türlü garantiyi reddeder.

Belgeler / Kaynaklar

intel Intel Trace Analizörü ve Toplayıcıyı Kullanmaya Başlayın [pdf] Kullanıcı Kılavuzu
Intel Trace Analizörü ve Toplayıcı'yı Kullanmaya Başlayın, Intel'i Kullanmaya Başlayın, İz Analizcisi ve Toplayıcı, Toplayıcı

Referanslar

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmiştir *