ابدأ مع برنامج Intel Trace Analyzer and Collector
ابدأ مع برنامج Intel® Trace Analyzer and Collector
استخدم مستند البدء هذا والتتبع المجمع مسبقًا file لمتابعة تحليل أداء MPI الأساسي باستخدام برنامج Intel® Trace Analyzer and Collector.
يساعد برنامج Intel Trace Analyzer and Collector على استكشاف كفاءة استخدام واجهة تمرير الرسائل (MPI) وتحديد نقاط الاتصال الفعالة ، واختناقات المزامنة ، وموازنة الحمل. لمزيد من المعلومات حول المنتج ، راجع صفحة منتج Intel Trace Analyzer and Collector.
قم بتنزيل برنامج Intel Trace Analyzer and Collector
- كجزء من مجموعة أدوات Intel® oneAPI HPC
- كأداة قائمة بذاتها
المتطلبات الأساسية
- قبل تشغيل برنامج Intel Trace Analyzer and Collector ، تأكد من تثبيت أحدث مكتبة Intel® MPI و Intel® oneAPI DPC ++ / C ++ Compiler أو Intel® Fortran Compiler.
- يقوم هذا بتعيين متغيرات البيئة المطلوبة للمترجمين ومكتبة Intel MPI و Intel Trace Analyzer and Collector ، وستكون جاهزًا لتتبع تطبيقاتك.
- لمزيد من المعلومات ، راجع: متطلبات نظام مجموعة أدوات Intel® oneAPI HPC Toolkit.
افهم سير العمل
- تتبع طلبك
- تحليل وظائف MPI الأكثر نشاطًا
- تحديد التفاعلات الإشكالية
- قم بتحسين أداء التطبيق الخاص بك عن طريق استبدال الوظيفة المسببة للمشكلة
تتبع تطبيق MPI الخاص بك
إنشاء أثر file لتجميع سجلات الأحداث لتحليل سلوك التطبيق التالي.
- قم بإعداد البيئة لتشغيل برنامج Intel® Trace Analyzer and Collector من خلال تشغيل البرنامج النصي setvars من مدير التثبيت oneAPI
ملحوظة
بشكل افتراضي ، يتم تثبيت برنامج Intel Trace Analyzer and Collector على / opt / intel / oneapi / itac لنظام التشغيل Linux * OS وللبرنامج Files (x86) \ Intel \ oneAPI \ itac \ الأحدث لنظام التشغيل Windows *.
على لينكس:
المصدر $ /opt/intel/oneapi/setvars.sh
على نظام التشغيل Windows:
"C:\البرنامج Files (x86) \ Intel \ oneAPI \ setvars.bat " - قم بتشغيل تطبيق MPI الخاص بك وقم بإنشاء تتبع باستخدام الخيار -trace.
على لينكس:
$ mpirun -trace -n 4 ./poisson_sendrecv.single
على نظام التشغيل Windows:
قم بتجميع التطبيق وجمع التتبع.
بالنسبة إلى برنامج التحويل البرمجي Intel oneAPI DPC ++ / C ++ ، قم بتشغيل:
> mpiicc -تتبع poisson_sendrecv.single.c
بالنسبة لبرنامج Intel Fortran Compiler ، قم بتشغيل:
> mpiifort - تتبع poisson_sendrecv.single.f
هذا السابقampيولد le تتبعًا (stf *) لـ asample poisson_sendrcv.s واحد تطبيق MPI - افتح ملف .stf الذي تم إنشاؤه file مع Intel Trace Analyzer مع Intel Trace Analyzer and Collector.
على لينكس:
$ Traceanalyzer ./poisson_sendrecv.single.stf
على نظام التشغيل Windows:
أداة تحليل التتبع poisson_sendrecv.single.stf
ملحوظة
لأغراض الاختبار ، يمكنك تنزيل أثر تم تجميعه مسبقًا file poisson_sendrecv.single.stf للبويسون المستخدم في هذا المستند وافتحه باستخدام Intel Trace Analyzer and Collector.
.stf file يفتح في صفحة الملخص view، والتي تمثل معلومات عامة حول أداء تطبيقك:ملحوظة لمزيد من المعلومات حول وظائف Intel Trace Analyzer and Collector ، راجع معرفة المزيد.
تحليل وظائف MPI الأكثر نشاطًا
قم بتحليل سلوك تطبيق MPI ، وابحث عن الاختناقات وحدد التسلسل للعثور على طرق لتحسين أداء التطبيق.
- من صفحة الملخص ، افتح الجدول الزمني للحدث view بالنقر فوق متابعة> الرسوم البيانية> الجدول الزمني للحدث لتحليل عميق لأهم وظائف MPI.
يعرض المخطط أنشطة العملية الفردية بمرور الوقت.
عمل التطبيق تكراري ، حيث يتكون كل تكرار من جزء حسابي واتصالات MPI. - حدد تكرارًا واحدًا للتركيز عليه وتكبيره عن طريق سحب الماوس فوق الفاصل الزمني المطلوب:
التتبع view يعرض المقطع داخل التتبع الذي حددته. يعرض مخطط المخطط الزمني للحدث الأحداث التي كانت نشطة أثناء التكرار المحدد.
- تمثل الأشرطة الأفقية العمليات ذات الوظائف المسماة في هذه العمليات.
- تشير الخطوط السوداء إلى الرسائل المرسلة بين العمليات. تربط هذه الخطوط عمليات الإرسال والاستلام.
- تمثل الخطوط الزرقاء العمليات الجماعية ، مثل البث أو تقليل العمليات.
- قم بالتبديل إلى Flat Profile علامة التبويب (أ) لإلقاء نظرة فاحصة على الوظائف التي يتم تنفيذها في النقطة الزمنية التي حددتها في الجدول الزمني للحدث.
- فك تجميع وظائف MPI لتحليل نشاط عملية MPI في تطبيقك.
للقيام بذلك ، انقر بزر الماوس الأيمن فوق All Processes> Group MPI (B) في Flat Profile واختر UngroupMPI. تعرض هذه العملية مكالمات MPI الفردية. - تحليل العمليات التي تتواصل مع جيرانها المباشرين باستخدام MPI_Sendrecv في بداية التكرار. على سبيل المثالampعلى:
- أ. في الample ، تبادل البيانات MPI_Sendrecv لديه عنق زجاجة: العملية لا تتبادل البيانات مع جارتها التالية حتى يكتمل التبادل مع سابقتها. الجداول الزمنية للحدث view يعرض هذا عنق الزجاجة كسلم.
- ب. يعيد MPI_Allreduce في نهاية التكرار مزامنة جميع العمليات ؛ هذا هو السبب في أن هذه الكتلة لها مظهر سلم عكسي.
- تحديد التسلسل باستخدام Function Profile ورسالة بروfile views.
- أ. افتح الرسوم البيانية في نفس الوقت:
في وظيفة Profile الرسم البياني ، افتح علامة التبويب Load Balancet. - اذهب إلى قائمة الرسوم البيانية لفتح رسالة احترافيةfile.
- ب. في علامة التبويب Load Balance ، قم بتوسيع MPI_Sendrecv و MPI_Allreduce. يشير Load Balancing إلى أن الوقت المستغرق في MPI_Sendrecv يزداد مع رقم العملية ، بينما ينخفض وقت MPI_Allreduce.
- ج. افحص رسالة Profile الرسم البياني لأسفل إلى الزاوية اليمنى السفلى.
يشير الترميز اللوني للكتل إلى أن الرسائل التي تنتقل من رتبة أعلى إلى رتبة أقل تحتاج إلى وقت أطول نسبيًا بينما الرسائل التي تنتقل من رتبة أدنى إلى رتبة أعلى تكشف عن نمط ضعيف زوجي-فردي:
- أ. افتح الرسوم البيانية في نفس الوقت:
تظهر نتائج التحليل المقارن أنه لا توجد أنماط تبادل معقدة في التطبيق ، ويتم التبادل فقط مع العمليات المجاورة. ستكون المعلومات ضرورية لتحسين أداء التطبيق الخاص بك عن طريق تغيير خطوة الاتصالات لتحسين نموذج الاتصال للتطبيق.
تحديد الاتصالات غير المتوازنة
شاهد طلبك في ظل الظروف المثالية وقارن التتبع الأصلي file مع الشخص المثالي لعزل التفاعلات الإشكالية.
- قم بإنشاء ملف file:
- أ. حدد متقدم> المثالية أو انقر فوق
(المثالية) زر شريط الأدوات.
- ب. تحقق من معلمات المثالية في مربع الحوار Idealization (التتبع المثالي file الاسم والنطاق الزمني للتحويل).
- ج. انقر فوق "ابدأ" لإضفاء الطابع المثالي على التتبع.
- أ. حدد متقدم> المثالية أو انقر فوق
- قارن التتبع الأصلي بالتتبع المثالي:
- أ. حدد متقدم> مخطط عدم التوازن أو انقر فوق
زر شريط الأدوات (مخطط عدم التوازن).
- ب. في مربع الحوار مخطط عدم التوازن ، انقر فوق فتح آخر File زر ، انتقل إلى التتبع المثالي ، وحدده.
- ج. في نافذة مخطط عدم التوازن ، انقر فوق زر الوضع الإجمالي وحدد وضع الانهيار.
- أ. حدد متقدم> مخطط عدم التوازن أو انقر فوق
يمكنك أن ترى أن MPI_Sendrecv هي الوظيفة الأكثر استهلاكا للوقت. يتم عرض عدم التوازن في الوزن
فاتح اللون ويشتمل على حوالي 10٪ لوظيفة MPI_Sendrecv. هذا هو الوقت الذي تقضيه العمليات في انتظار بعضها البعض.
تحسين أداء التطبيق الخاص بك عن طريق تغيير الاتصالات
- قم بتحسين أداء تطبيق MPI عن طريق تغيير الحظر إلى الاتصالات غير المحظورة.
في التعليمات البرمجية الخاصة بك ، استبدل MPI_Sendrcv التسلسلي بالاتصال غير المحظور: MPI_Isend و MPI_Irecv. على سبيل المثالample: مقتطف الشفرة الأصلي:
// تبادل الحدود
تبادل باطل (الفقرة * p ، الشبكة * غرام) {
int أنا ، ي ؛
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-> up، 100، MPI_COMM_WORLD،
& status_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
إذا (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) ؛ }
إذا (gr-> غادر! = MPI_PROC_NULL)
{
MPI_Recv (left_col، gr-> lrow + 2، MPI_DOUBLE، gr-> left، 400، MPI_COMM_WORLD، & status_400) ؛ لـ (i = 0 ؛ i <gr-> lrow + 2 ؛ i ++
{
gr-> x_new [i] [0] = left_col [i] ؛
}
}
تم تحديث مقتطف الشفرة
طلب MPI_Request [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على: - استخدم مقارنة محلل تتبع إنتل view لمقارنة التطبيق المتسلسل مع التطبيق المعدل. قارن أثرين بمساعدة المقارنة View، ذاهب الى View > قارن. المقارنة View يشبه:
في المقارنة View، يمكنك أن ترى أن استخدام الاتصال غير المحظور يساعد على إزالة التسلسل وتقليل وقت اتصال العمليات.
ملحوظة لمزيد من المعلومات حول أداء تطبيقك على مستوى العقدة ، راجع الوثائق الخاصة بالأدوات ذات الصلة: Intel® VTune ™ Profiler تحليل MPI Code وتحليل تطبيقات Intel® MPI باستخدام Intel® Advisor.
يتعلم أكثر
استكشف الموارد التالية للحصول على مزيد من المعلومات حول برنامج Intel Trace Analyzer and Collector.
الإخطارات وإخلاء المسؤولية
- قد تتطلب تقنيات Intel تفعيل الأجهزة أو البرامج أو تفعيل الخدمة.
- لا يمكن أن يكون أي منتج أو مكون آمنًا تمامًا.
- قد تختلف التكاليف والنتائج الخاصة بك.
- © شركة إنتل. تعد Intel وشعار Intel وعلامات Intel الأخرى علامات تجارية لشركة Intel Corporation أو الشركات التابعة لها. قد تكون الأسماء والعلامات التجارية الأخرى مملوكة لآخرين.
- لا يتم منح أي ترخيص (صريح أو ضمني، عن طريق الحجب أو غير ذلك) لأي حقوق الملكية الفكرية بموجب هذه الوثيقة.
- قد تحتوي المنتجات الموصوفة على عيوب في التصميم أو أخطاء معروفة باسم الأخطاء المطبعية والتي قد تتسبب في انحراف المنتج عن المواصفات المنشورة. تتوفر الأخطاء المطبعية الحالية عند الطلب.
- تتنصل Intel من جميع الضمانات الصريحة والضمنية ، بما في ذلك على سبيل المثال لا الحصر ، الضمانات الضمنية الخاصة بالتسويق ، والملاءمة لغرض معين ، وعدم الانتهاك ، بالإضافة إلى أي ضمان ينشأ عن مسار الأداء ، أو مسار التعامل ، أو الاستخدام في التجارة.
المستندات / الموارد
![]() |
intel ابدأ مع برنامج Intel Trace Analyzer and Collector [بي دي اف] دليل المستخدم ابدأ مع برنامج Intel Trace Analyzer and Collector ، وابدأ مع Intel و Trace Analyzer و Collector و Collector |