Intel Trace Analyzer və Collector ilə işə başlayın
Intel® Trace Analyzer və Collector ilə işə başlayın
Bu Başlanğıc sənədini və əvvəlcədən toplanmış izi istifadə edin file Intel® Trace Analyzer və Collector ilə əsas MPI performans analizini keçmək.
Intel Trace Analyzer və Collector mesaj ötürmə interfeysindən (MPI) istifadə səmərəliliyini araşdırmaqda və rabitə qaynar nöqtələrini, sinxronizasiya darboğazlarını və yük balansını müəyyən etməyə kömək edir. Məhsul haqqında ətraflı məlumat üçün Intel Trace Analyzer və Collector məhsul səhifəsinə baxın.
Intel Trace Analyzer və Collector proqramını yükləyin
- Intel® oneAPI HPC Toolbar dəstinin bir hissəsi kimi
- müstəqil bir vasitə kimi
İlkin şərtlər
- Intel Trace Analyzer və Collector-u işə salmazdan əvvəl, ən son Intel® MPI Kitabxanasını və Intel® oneAPI DPC++/C++ Kompilyatorunu və ya Intel® Fortran Kompilyatorunu quraşdırdığınızdan əmin olun.
- Bu kompilyatorlar, Intel MPI Kitabxanası və Intel Trace Analyzer və Collector üçün tələb olunan mühit dəyişənlərini təyin edir və siz proqramlarınızı izləməyə hazırsınız.
- Əlavə məlumat üçün baxın: Intel® oneAPI HPC Toolbar Sistem Tələbləri.
İş axınını anlayın
- Müraciətinizi İzləyin
- Ən aktiv MPI funksiyalarını təhlil edin
- Problemli qarşılıqlı əlaqələri müəyyənləşdirin
- Problem yaradan funksiyanı əvəz etməklə tətbiqinizin performansını yaxşılaşdırın
MPI tətbiqinizi izləyin
Bir iz yaradın file aşağıdakı tətbiq davranış təhlili üçün hadisə qeydlərini toplamaq.
- oneAPI quraşdırma direktorundan setvars skriptini işə salmaqla Intel® Trace Analyzer və Collector-u işə salmaq üçün mühiti qurun
QEYD
Defolt olaraq, Intel Trace Analyzer və Collector Linux* ƏS üçün /opt/intel/oneapi/itac-a və Proqrama quraşdırılmışdır. Files (x86)\Intel\oneAPI\itac\Windows* ƏS üçün ən son.
Linux-da:
$ mənbə /opt/intel/oneapi/setvars.sh
Windows-da:
“C:\Proqram Files (x86)\Intel\oneAPI\setvars.bat” - MPI tətbiqinizi işə salın və -trace seçimi ilə iz yaradın.
Linux-da:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
Windows-da:
Proqramı tərtib edin və izi toplayın.
Intel oneAPI DPC++/C++ Kompilyatoru üçün çalıştırın:
> mpiicc -trace poisson_sendrecv.single.c
Intel Fortran Kompilyatoru üçün çalıştırın:
> mpiifort -trace poisson_sendrecv.single.f
Bu keçmişample kimi üçün iz (stf*) yaradırample poisson_sendrcv.single MPI tətbiqi - Yaradılmış .stf faylını açın file Intel Trace Analyzer və Intel Trace Analyzer və Collector ilə.
Linux-da:
$ traceanalyzer ./ poisson_sendrecv.single.stf
Windows-da:
traceanalyzer poisson_sendrecv.single.stf
QEYD
Sınaq məqsədləri üçün əvvəlcədən toplanmış izi yükləyə bilərsiniz file Bu sənəddə istifadə olunan poisson üçün poisson_sendrecv.single.stf və onu Intel Trace Analyzer və Collector ilə açın.
The .stf file Xülasə səhifəsində açılır view, tətbiqinizin performansı haqqında ümumi məlumatı təmsil edir:QEYD Intel Trace Analyzer və Collector funksionallığı haqqında ətraflı məlumat üçün Ətraflı Məlumata baxın.
Ən Aktiv MPI Funksiyalarını təhlil edin
MPI tətbiqinin davranışını təhlil edin, darboğazları tapın və proqram performansını yaxşılaşdırmaq yollarını tapmaq üçün seriallaşdırmanı müəyyənləşdirin.
- Xülasə səhifəsindən Tədbir qrafikini açın view Ən yaxşı MPI funksiyalarının dərin təhlili üçün Davam > Diaqramlar > Hadisə qrafiki seçiminə klikləməklə.
Diaqram zamanla fərdi proses fəaliyyətlərini göstərir.
Tətbiq işi iterativdir, burada hər iterasiya hesablama hissəsi və MPI kommunikasiyalarından ibarətdir. - Siçanı tələb olunan vaxt intervalı üzərində sürükləməklə diqqəti cəmləmək və böyütmək üçün tək təkrarı müəyyənləşdirin:
İz view seçdiyiniz iz daxilində bölməni göstərir. Tədbirin qrafiki seçilmiş iterasiya zamanı aktiv olan hadisələri göstərir.
- Üfüqi çubuqlar bu proseslərdə çağırılan funksiyalarla prosesləri təmsil edir.
- Qara xətlər proseslər arasında göndərilən mesajları göstərir. Bu xətlər göndərmə və qəbul proseslərini birləşdirir.
- Mavi xətlər yayım və ya azaltma əməliyyatları kimi kollektiv əməliyyatları təmsil edir.
- Flat Pro-a keçinfile nişanı (A) sizin vaxt nöqtəsində yerinə yetirilən funksiyalara daha yaxından baxmaq üçün (Tədbir Xronologiyasında seçilmiş).
- Tətbiqinizdə MPI prosesinin fəaliyyətini təhlil etmək üçün MPI funksiyalarını qrupdan çıxarın.
Bunu etmək üçün Flat Pro-da Bütün Proseslər > Qrup MPI ( B) üzərinə sağ klikləyinfile və UngroupMPI seçin. Bu əməliyyat fərdi MPI zənglərini ifşa edir. - İterasiyanın başlanğıcında MPI_Sendrecv istifadə edərək, birbaşa qonşuları ilə əlaqə quran prosesləri təhlil edin. məsələnample:
- a. s-dəample, MPI_Sendrecv məlumat mübadiləsində darboğaz var: proses əvvəlki ilə mübadilə tamamlanana qədər növbəti qonşusu ilə məlumat mübadiləsi aparmır. Tədbir qrafikləri view bu darboğazı pilləkən kimi göstərir.
- b. İterasiyanın sonunda olan MPI_Allreduce bütün prosesləri yenidən sinxronlaşdırır; buna görə də bu blok tərs pilləkən görünüşünə malikdir.
- Function Pro-dan istifadə edərək serializasiyanı müəyyənləşdirinfile və Message Profile views.
- a. Qrafikləri eyni zamanda açın:
Function Pro-dafile diaqram, Yük balansı sekmesini açın. - Message Pro-nu açmaq üçün Diaqramlar menyusuna keçinfile.
- b. Yük balansı nişanında MPI_Sendrecv və MPI_Allreduce parametrlərini genişləndirin. Load Balancing göstərir ki, MPI_Sendrecv-də sərf olunan vaxt proses nömrəsi ilə artır, MPI_Allreduce üçün isə azalır.
- c. Message Pro-nu yoxlayınfile Aşağı sağ küncə qədər diaqramı aşağı salın.
Blokların rəng kodlaması göstərir ki, daha yüksək dərəcədən aşağı rütbəyə gedən mesajlar mütənasib olaraq daha çox vaxt tələb edir, aşağı rütbədən daha yüksək rütbəyə gedən mesajlar isə zəif cüt-tək növ nümunəni ortaya qoyur:
- a. Qrafikləri eyni zamanda açın:
Müqayisəli təhlilin nəticələri göstərir ki, tətbiqdə mürəkkəb mübadilə nümunələri yoxdur, mübadilə yalnız qonşu proseslərlə aparılır. Məlumat tətbiqin kommunikasiya modelini optimallaşdırmaq üçün Əlaqələri Dəyişdirməklə Tətbiqinizin Performansını Təkmilləşdirmək üçün vacib olacaq.
Balanssız Kommunikasiyaları Müəyyən edin
Müraciətinizi ideal şəraitdə izləyin və orijinal izi müqayisə edin file problemli qarşılıqlı əlaqələri təcrid etmək üçün ideallaşdırılmış biri ilə.
- İdeallaşdırılmış bir şey yaradın file:
- a. Qabaqcıl > İdeallaşdırma seçin və ya vurun
(İdeallaşdırma) alətlər paneli düyməsi.
- b. İdeallaşdırma dialoq qutusunda ideallaşdırma parametrlərini yoxlayın (ideal iz file ad və konvertasiya üçün vaxt aralığı).
- c. İzinizi ideallaşdırmaq üçün Start klikləyin.
- a. Qabaqcıl > İdeallaşdırma seçin və ya vurun
- Orijinal izi ideallaşdırılmış izlə müqayisə edin:
- a. Qabaqcıl > Disbalans Diaqramı seçin və ya üzərinə klikləyin
(Balans diaqramı) alətlər paneli düyməsi.
- b. Disbalans Diaqramı dialoq qutusunda Başqasını Aç düyməsini klikləyin File düyməsini basın, ideallaşdırılmış izə gedin və onu seçin.
- c. Disbalans Diaqramı pəncərəsində Total Mode düyməsini basın və Breakdown Mode seçin.
- a. Qabaqcıl > Disbalans Diaqramı seçin və ya üzərinə klikləyin
MPI_Sendrecv-nin ən çox vaxt aparan funksiya olduğunu görə bilərsiniz. Disbalans çəkisi göstərilir
açıq rəng və MPI_Sendrecv funksiyası üçün təxminən 10% təşkil edir. Bu, proseslərin bir-birini gözləməyə sərf etdiyi vaxtdır.
Rabitələri Dəyişdirərək Tətbiqinizin Performansını Təkmilləşdirin
- Bloklamanı bloklanmayan kommunikasiyalara dəyişdirərək MPI tətbiqinin işini yaxşılaşdırın.
Kodunuzda serial MPI_Sendrcv-ni bloklanmayan rabitə ilə əvəz edin: MPI_Isend və MPI_Irecv. məsələnample: Orijinal kod parçası:
// sərhəd mübadiləsi
boşluq mübadiləsi (para* p, grid* gr){
int i,j;
MPI_Status status_100, status_200, status_300, status_400;
// birinci sıranı göndər
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);
// sonuncu sıranı göndər
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 Analyzer Müqayisəsindən istifadə edin view seriyalı tətbiqi yenidən işlənmiş proqramla müqayisə etmək
// sol sütunu tmp massivlərinə köçürün
if(gr->sol != MPI_PROC_NULL){
gr->x_new[i][gr->lcol+1] = sağ_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
// sağa göndər
MPI_Göndər(sağ_sütun, gr->lrow+2, MPI_DOUBLE, gr->sağ, 400, MPI_COMM_WORLD); }
if(gr->sol != MPI_PROC_NULL)
{
MPI_Recv(sol_col, gr->lrow+2, MPI_DOUBLE, gr->sol, 400, MPI_COMM_WORLD,&status_400); for(i=0; i< gr->lrow+2; i++
{
gr->x_new[i][0] = sol_col[i];
}
}
Yenilənmiş kod parçası
MPI_Request tələbi[7];
// birinci sıranı göndər
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, tələb, MPI_STATUSES_IGNORE);
Düzəliş edildikdən sonra yenidən işlənmiş tətbiqin tək təkrarlanması aşağıdakı keçmişə bənzəyəcəkample: - Intel Trace Analyzer Müqayisəsindən istifadə edin view seriyalı tətbiqi yenidən işlənmiş proqramla müqayisə etmək. Müqayisə köməyi ilə iki izi müqayisə edin View, gedir View > Müqayisə et. Müqayisə View oxşar görünür:
Müqayisədə View, siz bloklanmayan rabitədən istifadənin serializasiyanı aradan qaldırmağa və proseslərin əlaqə vaxtını azaltmağa kömək etdiyini görə bilərsiniz.
QEYD Tətbiqinizin qovşaq səviyyəli performansı haqqında ətraflı məlumat üçün müvafiq alətlər üçün sənədlərə baxın: Intel® VTune™ Profiler MPI Kod Təhlili və Intel® Məsləhətçisindən istifadə edərək Intel® MPI proqramlarının təhlili.
Ətraflı məlumat əldə edin
Intel Trace Analyzer və Collector haqqında ətraflı məlumat üçün aşağıdakı resursları araşdırın.
Bildirişlər və İmtinalar
- Intel texnologiyaları effektiv aparat, proqram təminatı və ya xidmət aktivləşdirilməsini tələb edə bilər.
- Heç bir məhsul və ya komponent tamamilə təhlükəsiz ola bilməz.
- Xərcləriniz və nəticələriniz fərqli ola bilər.
- © Intel Korporasiyası. Intel, Intel loqosu və digər Intel markaları Intel Korporasiyasının və ya onun törəmə şirkətlərinin ticarət nişanlarıdır. Digər adlar və markalar başqalarının mülkiyyəti kimi iddia edilə bilər.
- Bu sənəd tərəfindən hər hansı əqli mülkiyyət hüququna heç bir lisenziya (açıq və ya nəzərdə tutulmuş, estoppel və ya başqa şəkildə) verilmir.
- Təsvir edilən məhsullarda dizayn qüsurları və ya səhvlər kimi tanınan səhvlər ola bilər ki, bu da məhsulun dərc edilmiş spesifikasiyalardan kənara çıxmasına səbəb ola bilər. Cari xarakterizə edilən səhvlər istək əsasında mövcuddur.
- Intel bütün açıq və nəzərdə tutulan zəmanətlərdən, o cümlədən məhdudiyyətsiz olaraq, satışa yararlılıq, müəyyən məqsəd üçün uyğunluq və pozulmama ilə bağlı nəzərdə tutulan zəmanətlərdən, habelə performans, əməliyyat kursu və ya ticarətdə istifadədən irəli gələn hər hansı zəmanətdən imtina edir.
Sənədlər / Resurslar
![]() |
intel Intel Trace Analyzer və Collector ilə başlayın [pdf] İstifadəçi təlimatı Intel Trace Analyzer və Collector ilə başlayın, Intel, Trace Analyzer və Collector, Collector ilə başlayın |