با اینتل Trace Analyzer و Collector شروع کنید

شروع-با-محصول-تحلیلگر-ردیابی-اینتل-و-کلکتور

با تحلیلگر و جمع‌آورنده ردیابی Intel® شروع کنید

از این سند Get Started و یک ردیابی از پیش جمع آوری شده استفاده کنید file برای گذراندن یک تجزیه و تحلیل اولیه عملکرد MPI با تحلیلگر و جمع کننده ردیابی اینتل.
تحلیلگر و جمع‌آورنده ردیابی اینتل به بررسی کارایی استفاده از رابط ارسال پیام (MPI) و شناسایی نقاط اتصال، تنگناهای همگام‌سازی و تعادل بار کمک می‌کند. برای اطلاعات بیشتر در مورد محصول، صفحه محصول Intel Trace Analyzer and Collector را ببینید.

آنالایزر و کلکتور ردیابی اینتل را دانلود کنید

  • به عنوان بخشی از Intel® OneAPI HPC Toolkit
  • به عنوان یک ابزار مستقل

پیش نیازها

  • قبل از اجرای Intel Trace Analyzer و Collector، مطمئن شوید که آخرین Intel® MPI Library و Intel® oneAPI DPC++/C++ Compiler یا Intel® Fortran Compiler را نصب کرده اید.
  • این متغیرهای محیطی مورد نیاز را برای کامپایلرها، کتابخانه Intel MPI، و Intel Trace Analyzer و Collector تنظیم می کند و شما آماده ردیابی برنامه های خود هستید.
  • برای اطلاعات بیشتر، نگاه کنید به: Intel® OneAPI HPC Toolkit System Requirements.

گردش کار را درک کنید

  1. برنامه خود را ردیابی کنید
  2. فعال ترین توابع MPI را تجزیه و تحلیل کنید
  3. تعاملات مشکل ساز را شناسایی کنید
  4. با جایگزین کردن تابع ایجاد مشکل، عملکرد برنامه خود را بهبود بخشید

برنامه MPI خود را ردیابی کنید

ردیابی ایجاد کنید file برای جمع آوری گزارش رویدادها برای تجزیه و تحلیل رفتار برنامه زیر.

  1. با اجرای اسکریپت setvars از مدیر نصب oneAPI، محیطی را برای راه اندازی Intel® Trace Analyzer و Collector تنظیم کنید.
    توجه
    به طور پیش فرض، Intel Trace Analyzer and Collector در /opt/intel/oneapi/itac برای سیستم عامل لینوکس* و برنامه نصب شده است. Files (x86)\Intel\oneAPI\itac\جدیدترین برای Windows* OS.
    در لینوکس:
    منبع $ /opt/intel/oneapi/setvars.sh
    در ویندوز:
    C:\برنامه Files (x86)\Intel\oneAPI\setvars.bat"
  2. برنامه MPI خود را اجرا کنید و با گزینه -trace یک ردیابی ایجاد کنید.
    در لینوکس:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    در ویندوز:
    برنامه را کامپایل کنید و ردیابی را جمع آوری کنید.
    برای کامپایلر OneAPI DPC++/C++ Intel، اجرا کنید:
    > mpiicc -trace poisson_sendrecv.single.c
    برای کامپایلر Intel Fortran، اجرا کنید:
    > mpiifort -trace poisson_sendrecv.single.f
    این سابقample یک ردیابی (stf*) برای as ایجاد می کندampبرنامه le poisson_sendrcv.single MPI
  3. stf. ایجاد شده را باز کنید file با اینتل Trace Analyzer با Intel Trace Analyzer و Collector.
    در لینوکس:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    در ویندوز:
    ردیابی poisson_sendrecv.single.stf

توجه
برای اهداف آزمایشی، می توانید یک ردیابی از پیش جمع آوری شده را دانلود کنید file poisson_sendrecv.single.stf برای poisson استفاده شده در این سند و آن را با Intel Trace Analyzer و Collector باز کنید.
stf file در صفحه خلاصه باز می شود view، که اطلاعات کلی در مورد عملکرد برنامه شما را نشان می دهد:شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-1شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-2توجه برای اطلاعات بیشتر در مورد عملکرد Intel Trace Analyzer و Collector، به اطلاعات بیشتر مراجعه کنید.

فعال ترین توابع MPI را تجزیه و تحلیل کنید

رفتار برنامه کاربردی MPI را تجزیه و تحلیل کنید، گلوگاه ها را پیدا کنید و سریال سازی را شناسایی کنید تا راه هایی برای بهبود عملکرد برنامه پیدا کنید.

  1. از صفحه خلاصه، جدول زمانی رویداد را باز کنید view برای تجزیه و تحلیل عمیق عملکردهای برتر MPI، روی ادامه > نمودارها > جدول زمانی رویداد کلیک کنید.
    نمودار فعالیت های فرآیندی فردی را در طول زمان نمایش می دهد.
    کار برنامه تکراری است، که در آن هر تکرار از یک بخش محاسباتی و ارتباطات MPI تشکیل شده است.
  2. با کشیدن موس خود در بازه زمانی مورد نیاز، یک تکرار را شناسایی کنید تا روی آن تمرکز کنید و روی آن بزرگنمایی کنید:شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-3ردیابی view بخشی را در ردیابی که انتخاب کرده اید نشان می دهد. نمودار جدول زمانی رویداد رویدادهایی را نشان می دهد که در طول تکرار انتخابی فعال بودند.
    • میله‌های افقی فرآیندها را با توابع فراخوانی شده در این فرآیندها نشان می‌دهند.
    • خطوط سیاه نشان دهنده پیام های ارسال شده بین فرآیندها هستند. این خطوط فرآیندهای ارسال و دریافت را به هم متصل می کنند.
    • خطوط آبی نشان دهنده عملیات جمعی مانند عملیات پخش یا کاهش است.
  3. به Flat Pro برویدfile برگه (A) برای مشاهده دقیق تر عملکردهایی که در نقطه زمانی شما اجرا می شوند (در جدول زمانی رویداد انتخاب شده است.شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-4
  4. برای تجزیه و تحلیل فعالیت فرآیند MPI در برنامه شما، توابع MPI را از حالت گروه بندی خارج کنید.
    برای انجام این کار، روی All Processes > Group MPI (B) در Flat Pro کلیک راست کنیدfile و UngroupMPI را انتخاب کنید. این عملیات، تماس‌های فردی MPI را نشان می‌دهد.
  5. فرآیندهای در ارتباط با همسایگان مستقیم خود را با استفاده از MPI_Sendrecv در شروع تکرار تجزیه و تحلیل کنید. برای مثالampدر:شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-5
    • آ. در سampمبادله داده MPI_Sendrecv دارای یک گلوگاه است: این فرآیند تا زمانی که تبادل با همسایه قبلی کامل نشود، داده‌ها را با همسایه بعدی خود مبادله نمی‌کند. جدول زمانی رویداد view این گلوگاه را به صورت پلکانی نمایش می دهد.
    • ب MPI_Allreduce در پایان تکرار همه فرآیندها را مجدداً همزمان می کند. به همین دلیل است که این بلوک ظاهر پلکانی معکوس دارد.
  6. سریال سازی را با استفاده از Function Pro شناسایی کنیدfile و Message Profile views.
    • آ. نمودارها را همزمان باز کنید:
      در Function Profile نمودار، Load Balancetab را باز کنید.
    • برای باز کردن Message Pro به منوی نمودارها برویدfile.
    • ب در تب Load Balance، MPI_Sendrecv و MPI_Allreduce را گسترش دهید. Load Balancing نشان می دهد که زمان صرف شده در MPI_Sendrecv با تعداد فرآیند افزایش می یابد، در حالی که زمان برای MPI_Allreduce کاهش می یابد.
    • ج. Message Pro را بررسی کنیدfile نمودار را به گوشه پایین سمت راست بکشید.
      کدگذاری رنگ بلوک‌ها نشان می‌دهد که پیام‌هایی که از رتبه بالاتر به رتبه پایین‌تر سفر می‌کنند به نسبت زمان بیشتری نیاز دارند در حالی که پیام‌هایی که از رتبه پایین‌تر به رتبه بالاتر می‌روند، یک نوع الگوی زوج و فرد ضعیف را نشان می‌دهند:شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-6

نتایج تحلیل مقایسه ای نشان می دهد که هیچ الگوی مبادله پیچیده ای در برنامه وجود ندارد، مبادله تنها با فرآیندهای همسایه انجام می شود. اطلاعات برای بهبود عملکرد برنامه شما با تغییر مرحله ارتباطات برای بهینه سازی مدل ارتباطی برنامه ضروری است.

ارتباطات نامتعادل را شناسایی کنید

برنامه خود را تحت شرایط ایده آل تماشا کنید و ردیابی اصلی را مقایسه کنید file با یک ایده آل برای جداسازی تعاملات مشکل ساز.

  1. ایده آل ایجاد کنید file:
    • آ. Advanced > Idealization را انتخاب کنید یا روی آن کلیک کنیدشروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-7 دکمه نوار ابزار (ایده آل سازی).
    • ب پارامترهای ایده آل سازی را در کادر محاوره ای Idealization (ردیابی ایده آل) بررسی کنید file نام و محدوده زمانی برای تبدیل).
    • ج برای ایده آل کردن ردیابی خود روی Start کلیک کنید.
  2. ردیابی اصلی را با ردیابی ایده آل مقایسه کنید:
    • آ. Advanced > Imbalance Diagram را انتخاب کنید یا روی آن کلیک کنید شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-8دکمه نوار ابزار (نمودار عدم تعادل).
    • ب در کادر محاوره ای دیاگرام عدم تعادل، روی Open Another کلیک کنید File را فشار دهید، به ردیابی ایده آل بروید و آن را انتخاب کنید.
    • ج. در پنجره Imbalance Diagram، روی دکمه Total Mode کلیک کرده و Breakdown Mode را انتخاب کنید.

شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-9

می بینید که MPI_Sendrecv زمان برترین تابع است. وزن عدم تعادل در نمایش داده می شود
رنگ روشن است و حدود 10٪ برای تابع MPI_Sendrecv را شامل می شود. این زمانی است که فرآیندها در انتظار یکدیگر هستند.

با تغییر ارتباطات، عملکرد برنامه خود را بهبود بخشید

  1. با تغییر انسداد به ارتباطات غیر مسدود، عملکرد برنامه MPI را بهبود بخشید.
    در کد خود، سریال MPI_Sendrcv را با ارتباط غیر مسدود کننده جایگزین کنید: MPI_Isend و MPI_Irecv. برای مثالample: قطعه کد اصلی:
    // تبادل مرز
    مبادله خالی (پارا* p, grid* gr){
    int i,j;
    MPI_Status status_100, status_200, status_300, status_400;
    // سطر اول را پایین بیاورید
    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->بالا، 100، MPI_COMM_WORLD،
    &وضعیت_100)؛
    // آخرین ردیف را ارسال کنید
    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);
    از مقایسه آنالیز ردیابی اینتل استفاده کنید view برای مقایسه برنامه سریالی با نسخه اصلاح شده
    // ستون سمت چپ را در آرایه های tmp کپی کنید
    if(gr-> چپ != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // ارسال درست
    MPI_Send(right_col، gr->lrow+2، MPI_DOUBLE، gr->right، 400، MPI_COMM_WORLD); }
    if(gr-> چپ != 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];
    }
    }
    قطعه کد به روز شد
    MPI_درخواست درخواست[7]؛
    // سطر اول را پایین بیاورید
    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)؛
    پس از تصحیح، تکرار واحد برنامه تجدید نظر شده مانند مثال زیر خواهد بودampدر:شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-10
  2. از مقایسه آنالیز ردیابی اینتل استفاده کنید view برای مقایسه برنامه سریالی با برنامه اصلاح شده. دو ردیابی را با کمک مقایسه مقایسه کنید View، رفتن به View > مقایسه کنید مقایسه View شبیه به:شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-11در مقایسه View، مشاهده می کنید که استفاده از ارتباطات غیر مسدود به حذف سریال سازی و کاهش زمان ارتباط فرآیندها کمک می کند.
    توجه برای اطلاعات بیشتر در مورد عملکرد سطح گره برنامه خود، به مستندات ابزارهای مربوطه مراجعه کنید: Intel® VTune™ Profiler تجزیه و تحلیل کد MPI و تجزیه و تحلیل برنامه های Intel® MPI با استفاده از Intel® Advisor.

بیشتر بدانید

برای اطلاعات بیشتر در مورد Intel Trace Analyzer و Collector، منابع زیر را کاوش کنید.شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-12شروع-با-تحلیلگر-ردیابی-اینتل-و-کلکتور-شکل-13

اطلاعیه ها و سلب مسئولیت

  • فن آوری های اینتل ممکن است نیاز به فعال سازی سخت افزار ، نرم افزار یا سرویس داشته باشند.
  • هیچ محصول یا م componentلفه ای نمی تواند کاملاً ایمن باشد.
  • هزینه ها و نتایج شما ممکن است متفاوت باشد.
  • © شرکت اینتل. اینتل، لوگوی اینتل و سایر علائم اینتل علائم تجاری Intel Corporation یا شرکت های تابعه آن هستند. نام ها و مارک های دیگر ممکن است به عنوان دارایی دیگران ادعا شود.
  • هیچ مجوزی (به صورت صریح یا ضمنی، توسط estoppel یا غیره) برای هیچ گونه حقوق مالکیت معنوی توسط این سند اعطا نمی شود.
  • محصولات شرح داده شده ممکن است دارای ایرادات طراحی یا خطاهایی به نام خطا باشد که ممکن است باعث انحراف محصول از مشخصات منتشر شده شود. خطاهای مشخص شده فعلی در صورت درخواست در دسترس هستند.
  • اینتل تمام ضمانت‌های صریح و ضمنی، از جمله بدون محدودیت، ضمانت‌های ضمنی خرید و فروش، تناسب برای یک هدف خاص، و عدم نقض، و همچنین هر گونه ضمانت ناشی از عملکرد، دوره معامله یا استفاده در تجارت را سلب می‌کند.

اسناد / منابع

intel با تحلیلگر و جمع‌آورنده ردیابی اینتل شروع کنید [pdfراهنمای کاربر
شروع به کار با اینتل Trace Analyzer and Collector، شروع با Intel, Trace Analyzer and Collector, Collector

مراجع

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *