Memulai Intel Trace Analyzer dan Collector

Memulai-dengan-Intel-Trace-Analyzer-and-Collector-product

Memulai dengan Intel® Trace Analyzer dan Collector

Gunakan dokumen Memulai ini dan pelacakan yang dikumpulkan sebelumnya file untuk menjalani analisis kinerja MPI dasar dengan Intel® Trace Analyzer and Collector.
Intel Trace Analyzer and Collector membantu mengeksplorasi efisiensi penggunaan message passing interface (MPI) dan mengidentifikasi hotspot komunikasi, kemacetan sinkronisasi, dan penyeimbangan muatan. Untuk informasi selengkapnya tentang produk, lihat halaman produk Intel Trace Analyzer and Collector.

Unduh Intel Trace Analyzer dan Collector

  • sebagai bagian dari Intel® oneAPI HPC Toolkit
  • sebagai alat mandiri

Prasyarat

  • Sebelum menjalankan Intel Trace Analyzer and Collector, pastikan Anda telah menginstal Intel® MPI Library dan Intel® oneAPI DPC++/C++ Compiler atau Intel® Fortran Compiler terbaru.
  • Ini menetapkan variabel lingkungan yang diperlukan untuk kompiler, Intel MPI Library, dan Intel Trace Analyzer and Collector, dan Anda siap untuk melacak aplikasi Anda.
  • Untuk informasi selengkapnya, lihat: Persyaratan Sistem Intel® oneAPI HPC Toolkit.

Pahami Alur Kerjanya

  1. Lacak Aplikasi Anda
  2. Analisis fungsi MPI yang paling aktif
  3. Mengidentifikasi interaksi yang bermasalah
  4. Tingkatkan performa aplikasi Anda dengan mengganti fungsi penyebab masalah

Lacak Aplikasi MPI Anda

Menghasilkan jejak file untuk mengumpulkan log peristiwa untuk analisis perilaku aplikasi berikut.

  1. Siapkan lingkungan untuk meluncurkan Intel® Trace Analyzer and Collector dengan menjalankan skrip setvars dari direktur penginstalan oneAPI
    CATATAN
    Secara default, Intel Trace Analyzer and Collector diinstal ke /opt/intel/oneapi/itac untuk OS Linux* dan ke Program Files (x86)\Intel\oneAPI\itac\terbaru untuk OS Windows*.
    Di Linux:
    $ sumber /opt/intel/oneapi/setvars.sh
    Di Windows:
    “C:\Program Files (x86)\Intel\oneAPI\setvars.bat”
  2. Jalankan aplikasi MPI Anda dan hasilkan jejak dengan opsi -trace.
    Di Linux:
    $ mpirun -jejak -n 4 ./poisson_sendrecv.tunggal
    Di Windows:
    Kompilasi aplikasi dan kumpulkan jejaknya.
    Untuk Intel oneAPI DPC++/C++ Compiler, jalankan:
    > mpiicc -trace poisson_sendrecv.single.c
    Untuk Intel Fortran Compiler, jalankan:
    > mpiifort -trace poisson_sendrecv.single.f
    Mantan iniample menghasilkan jejak (stf*) untuk asampaplikasi le poisson_sendrcv.single MPI
  3. Buka .stf yang dihasilkan file dengan Intel Trace Analyzer dengan Intel Trace Analyzer dan Collector.
    Di Linux:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    Di Windows:
    traceanalyzer poisson_sendrecv.single.stf

CATATAN
Untuk tujuan pengujian, Anda dapat mengunduh jejak yang dikumpulkan sebelumnya file poisson_sendrecv.single.stf untuk poisson yang digunakan dalam dokumen ini dan buka dengan Intel Trace Analyzer and Collector.
.stf file terbuka di Halaman Ringkasan view, yang mewakili informasi umum tentang performa aplikasi Anda:Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-1Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-2CATATAN Untuk informasi selengkapnya tentang fungsionalitas Intel Trace Analyzer dan Collector, lihat Pelajari Lebih Lanjut.

Menganalisis Fungsi MPI Paling Aktif

Menganalisis perilaku aplikasi MPI, menemukan kemacetan, dan mengidentifikasi serialisasi untuk menemukan cara meningkatkan kinerja aplikasi.

  1. Dari Halaman Ringkasan, buka Linimasa Acara view dengan mengklik Continue > Charts > Event Timeline untuk analisis mendalam dari fungsi MPI teratas.
    Bagan menampilkan aktivitas proses individu dari waktu ke waktu.
    Pekerjaan aplikasi bersifat iteratif, dimana setiap iterasi terdiri dari bagian komputasi dan komunikasi MPI.
  2. Identifikasi satu iterasi untuk difokuskan dan perbesar dengan menyeret mouse Anda selama interval waktu yang diperlukan:Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-3Jejak view memperlihatkan bagian dalam pelacakan yang Anda pilih. Bagan Garis Waktu Peristiwa menampilkan peristiwa yang aktif selama iterasi yang dipilih.
    • Bilah horizontal mewakili proses dengan fungsi yang dipanggil dalam proses ini.
    • Garis hitam menunjukkan pesan yang dikirim antar proses. Garis-garis ini menghubungkan proses pengiriman dan penerimaan.
    • Garis biru mewakili operasi kolektif, seperti menyiarkan atau mengurangi operasi.
  3. Beralih ke Flat Profile tab (A) untuk melihat lebih dekat fungsi yang dijalankan pada titik waktu yang Anda pilih (dipilih di Timeline Acara.Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-4
  4. Ungroup MPI berfungsi untuk menganalisis aktivitas proses MPI di aplikasi Anda.
    Untuk melakukannya, klik kanan All Processes > Group MPI ( B) di Flat Profile dan pilih UngroupMPI. Operasi ini memperlihatkan panggilan MPI individu.
  5. Analisis proses yang berkomunikasi dengan tetangga langsungnya menggunakan MPI_Sendrecv pada awal iterasi. Untuk mantanampsaya:Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-5
    • A. Di sample, pertukaran data MPI_Sendrecv memiliki hambatan: proses tidak bertukar data dengan tetangga berikutnya hingga pertukaran dengan yang sebelumnya selesai. Garis Waktu Acara view menampilkan kemacetan ini sebagai tangga.
    • B. MPI_Allreduce pada akhir iterasi menyinkronkan ulang semua proses; itulah mengapa blok ini memiliki tampilan tangga terbalik.
  6. Identifikasi serialisasi, menggunakan Function Profile dan Pesan Profile views.
    • A. Buka grafik secara bersamaan:
      Dalam Fungsi Profile bagan, buka tab Load Balance.
    • Buka menu Charts untuk membuka Message Profile.
    • B. Di tab Load Balance, perluas MPI_Sendrecv dan MPI_Allreduce. Load Balancing menunjukkan bahwa waktu yang dihabiskan di MPI_Sendrecv bertambah dengan jumlah proses, sedangkan waktu untuk MPI_Allreduce berkurang.
    • C. Periksa Message Profile Bagan ke sudut kanan bawah.
      Pengkodean warna dari blok menunjukkan bahwa pesan yang berjalan dari peringkat yang lebih tinggi ke peringkat yang lebih rendah membutuhkan waktu yang lebih proporsional secara proporsional, sementara pesan yang berjalan dari peringkat yang lebih rendah ke peringkat yang lebih tinggi menunjukkan pola genap-ganjil yang lemah:Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-6

Hasil analisis komparatif menunjukkan bahwa tidak terdapat pola pertukaran yang kompleks pada aplikasi, pertukaran dilakukan hanya dengan proses yang bertetangga. Informasi tersebut akan sangat penting untuk Meningkatkan Kinerja Aplikasi Anda dengan Mengubah langkah Komunikasi untuk mengoptimalkan model komunikasi aplikasi.

Identifikasi Komunikasi yang Tidak Seimbang

Perhatikan aplikasi Anda dalam kondisi ideal dan bandingkan jejak aslinya file dengan yang diidealkan untuk mengisolasi interaksi bermasalah.

  1. Buat yang diidealkan file:
    • A. Pilih Lanjutan > Idealisasi atau klikMemulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-7 (Idealisasi) tombol toolbar.
    • B. Centang parameter idealisasi di kotak dialog Idealisasi (jejak ideal file nama dan rentang waktu untuk konversi).
    • C. Klik Mulai untuk mengidealkan jejak Anda.
  2. Bandingkan jejak asli dengan jejak ideal:
    • A. Pilih Lanjutan > Diagram Ketidakseimbangan atau klik Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-8(Diagram Ketidakseimbangan) tombol bilah alat.
    • B. Di kotak dialog Diagram Ketidakseimbangan, klik tombol Buka Lainnya File tombol, arahkan ke jejak yang diidealkan, dan pilih itu.
    • C. Di jendela Diagram Ketidakseimbangan, klik tombol Total Mode dan pilih Breakdown Mode.

Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-9

Anda dapat melihat bahwa MPI_Sendrecv adalah fungsi yang paling memakan waktu. Ketidakseimbangan berat ditampilkan di
warna terang dan terdiri dari sekitar 10% untuk fungsi MPI_Sendrecv. Ini adalah waktu yang dihabiskan proses untuk menunggu satu sama lain.

Tingkatkan Performa Aplikasi Anda dengan Mengubah Komunikasi

  1. Tingkatkan kinerja aplikasi MPI dengan mengubah pemblokiran menjadi komunikasi non-pemblokiran.
    Dalam kode Anda, ganti serial MPI_Sendrcv dengan komunikasi non-pemblokiran: MPI_Isend dan MPI_Irecv. Untuk mantanample: Potongan kode asli:
    // pertukaran batas
    pertukaran batal (para* p, grid* gr){
    ke dalam aku,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // kirim baris pertama
    MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->bawah, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_baru[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->atas, 100, MPI_COMM_WORLD,
    &status_100);
    // kirim baris terakhir
    MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->atas, 200, MPI_COMM_WORLD);
    MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->bawah, 200, MPI_COMM_WORLD, &status_200);
    Gunakan Perbandingan Intel Trace Analyzer view untuk membandingkan aplikasi serial dengan yang direvisi
    // salin kolom kiri ke tmp array
    jika(gr->kiri != MPI_PROC_NULL){
    gr->x_baru[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // kirim ke kanan
    MPI_Send(kolom_kanan, gr->lrow+2, MPI_DOUBLE, gr->kanan, 400, MPI_COMM_WORLD); }
    jika(gr->kiri != MPI_PROC_NULL)
    {
    MPI_Recv(kolom_kiri, gr->lrow+2, MPI_DOUBLE, gr->kiri, 400, MPI_COMM_WORLD,&status_400); untuk(i=0; i< gr->lrow+2; i++
    {
    gr->x_baru[i][0] = left_col[i];
    }
    }
    Cuplikan kode yang diperbarui
    Permintaan_Permintaan MPI[7];
    // kirim baris pertama
    MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->bawah, 100, MPI_COMM_WORLD, &req[0]);
    MPI_Irecv(gr->x_baru[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->atas, 100, MPI_COMM_WORLD, &req[1]);
    …..
    MPI_Waitall(7, req, MPI_STATUS_IGNORE);
    Setelah diperbaiki, iterasi tunggal dari aplikasi yang direvisi akan terlihat seperti contoh berikutampsaya:Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-10
  2. Gunakan Perbandingan Intel Trace Analyzer view untuk membandingkan aplikasi serial dengan yang direvisi. Bandingkan dua jejak dengan bantuan Perbandingan View, pergi ke View > Bandingkan. Perbandingan View terlihat mirip dengan:Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-11Dalam Perbandingan View, Anda dapat melihat bahwa menggunakan komunikasi non-pemblokiran membantu menghapus serialisasi dan mengurangi waktu komunikasi proses.
    CATATAN Untuk informasi lebih lanjut tentang performa tingkat node aplikasi Anda, lihat dokumentasi untuk masing-masing alat: Intel® VTune™ Profiler Analisis Kode MPI dan Menganalisis aplikasi Intel® MPI menggunakan Intel® Advisor.

Pelajari lebih lanjut

Jelajahi sumber daya berikut untuk informasi lebih lanjut tentang Intel Trace Analyzer and Collector.Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-12Memulai-dengan-Intel-Trace-Analyzer-and-Collector-fig-13

Pemberitahuan dan Penafian

  • Teknologi Intel mungkin memerlukan perangkat keras, perangkat lunak, atau aktivasi layanan yang diaktifkan.
  • Tidak ada produk atau komponen yang benar-benar aman.
  • Biaya dan hasil Anda mungkin berbeda.
  • © Perusahaan Intel. Intel, logo Intel, dan merek Intel lainnya adalah merek dagang dari Intel Corporation atau anak perusahaannya. Nama dan merek lain dapat diklaim sebagai milik orang lain.
  • Tidak ada lisensi (tersurat maupun tersirat, berdasarkan estoppel atau lainnya) terhadap hak kekayaan intelektual apa pun yang diberikan oleh dokumen ini.
  • Produk yang dijelaskan mungkin mengandung cacat desain atau kesalahan yang dikenal sebagai errata yang dapat menyebabkan produk menyimpang dari spesifikasi yang dipublikasikan. Errata yang dijelaskan saat ini tersedia berdasarkan permintaan.
  • Intel menafikan semua jaminan tersurat dan tersirat, termasuk tanpa batasan, jaminan tersirat atas kelayakan jual, kesesuaian untuk tujuan tertentu, dan non-pelanggaran, serta jaminan apa pun yang timbul dari pelaksanaan kinerja, pelaksanaan transaksi, atau penggunaan dalam perdagangan.

Dokumen / Sumber Daya

intel Memulai Intel Trace Analyzer dan Collector [Bahasa Indonesia:] Panduan Pengguna
Memulai dengan Intel Trace Analyzer dan Collector, Memulai dengan Intel, Trace Analyzer dan Collector, Collector

Referensi

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Bidang yang wajib diisi ditandai *