התחל עם Intel Trace Analyzer ואספן

התחל-עם-Intel-Trace-Analyzer-and-Color-מוצר

התחל עם Intel® Trace Analyzer ואספן

השתמש במסמך התחלה זה ובמעקב שנאסף מראש 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 Toolkit
  • ככלי עצמאי

דרישות מוקדמות

  • לפני הפעלת 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.

הבן את זרימת העבודה

  1. עקוב אחר היישום שלך
  2. נתח את פונקציות ה-MPI הפעילות ביותר
  3. זיהוי אינטראקציות בעייתיות
  4. שפר את ביצועי היישום שלך על ידי החלפת הפונקציה הגורמת לבעיות

עקוב אחר יישום ה-MPI שלך

צור עקבות file לאסוף יומני אירועים עבור ניתוח התנהגות היישום הבא.

  1. הגדר את הסביבה להפעלת Intel® Trace Analyzer and Collector על ידי הפעלת סקריפט setvars ממנהל ההתקנה של oneAPI
    פֶּתֶק
    כברירת מחדל, Intel Trace Analyzer and Collector מותקנים ל- /opt/intel/oneapi/itac עבור מערכת ההפעלה Linux* ולתוכנית Files (x86)\Intel\oneAPI\itac\החדש ביותר עבור מערכת ההפעלה Windows*.
    על לינוקס:
    מקור $ /opt/intel/oneapi/setvars.sh
    בווינדוס:
    "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
  2. הפעל את יישום ה-MPI שלך וצור מעקב עם אפשרות -trace.
    על לינוקס:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    בווינדוס:
    הרכיב את האפליקציה ואסוף את העקבות.
    עבור Intel oneAPI DPC++/C++ מהדר, הפעל:
    > mpiicc -trace poisson_sendrecv.single.c
    עבור Intel Fortran Compiler, הפעל:
    > mpiifort -trace poisson_sendrecv.single.f
    האקסית הזוample יוצר מעקב (stf*) עבור asample poisson_sendrcv.יישום MPI יחיד
  3. פתח את ה-.stf שנוצר file עם Intel Trace Analyzer עם Intel Trace Analyzer ואספן.
    על לינוקס:
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    בווינדוס:
    traceanalyzer poisson_sendrecv.single.stf

פֶּתֶק
למטרות בדיקה, אתה יכול להוריד מעקב שנאסף מראש file poisson_sendrecv.single.stf עבור הרעל המשמש במסמך זה ופתח אותו עם Intel Trace Analyzer and Collector.
ה-.stf file נפתח בדף הסיכום view, המייצג מידע כללי על ביצועי האפליקציה שלך:התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-1התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-2פֶּתֶק למידע נוסף על Intel Trace Analyzer ופונקציונליות Collector, ראה מידע נוסף.

נתח את פונקציות ה-MPI הפעילות ביותר

נתח התנהגות של יישום MPI, מצא צווארי בקבוק וזיהוי סדרה כדי למצוא את הדרכים לשיפור ביצועי היישום.

  1. מדף הסיכום פתח את ציר הזמן של האירוע view על ידי לחיצה על המשך > תרשימים > ציר זמן של אירועים לניתוח מעמיק של פונקציות ה-MPI המובילות.
    התרשים מציג פעילויות תהליך בודדים לאורך זמן.
    עבודת היישום היא איטרטיבית, כאשר כל איטרציה מורכבת מחלק חישובי ומתקשורת MPI.
  2. זהה איטרציה בודדת להתמקד בה ולהתקרב אליה על ידי גרירת העכבר על מרווח הזמן הנדרש:התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-3העקבות view מציג את הקטע בתוך המעקב שבחרת. תרשים ציר הזמן של האירוע מציג את האירועים שהיו פעילים במהלך האיטרציה שנבחרה.
    • פסים אופקיים מייצגים את התהליכים עם הפונקציות הנקראות בתהליכים אלה.
    • קווים שחורים מציינים הודעות שנשלחו בין תהליכים. קווים אלו מחברים בין תהליכי שליחה וקבלה.
    • קווים כחולים מייצגים פעולות קולקטיביות, כגון שידור או צמצום פעולות.
  3. עבור ל-Flat Profile לשונית (A) כדי להסתכל מקרוב על פונקציות המופעלות בנקודת הזמן שבה אתה ( שנבחר בציר הזמן של האירוע.התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-4
  4. בטל קבוצה של פונקציות MPI כדי לנתח פעילות תהליך MPI ביישום שלך.
    כדי לעשות זאת, לחץ באמצעות לחצן העכבר הימני על כל התהליכים > קבוצת MPI ( B) ב-Flat Profile ובחר ב-UngroupMPI. פעולה זו חושפת את קריאות ה-MPI הבודדות.
  5. נתח את התהליכים המתקשרים עם שכניהם הישירים באמצעות MPI_Sendrecv בתחילת האיטרציה. למשלampעל:התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-5
    • א. ב-sample, לחילופי הנתונים MPI_Sendrecv יש צוואר בקבוק: התהליך אינו מחליף נתונים עם השכן הבא שלו עד להשלמת ההחלפה עם הקודם. לוחות הזמנים של האירוע view מציג את צוואר הבקבוק הזה כגרם מדרגות.
    • ב. ה-MPI_Allreduce בסוף האיטרציה מסנכרן מחדש את כל התהליכים; לכן לבלוק הזה יש מראה של גרם מדרגות הפוך.
  6. זיהוי סדרה באמצעות ה-Function Profile ו-Message Profile views.
    • א. פתח את התרשימים בו-זמנית:
      ב-Function Profile תרשים, פתח את הכרטיסייה Load Balance.
    • עבור לתפריט תרשימים כדי לפתוח Message Profile.
    • ב. בכרטיסייה איזון עומסים, הרחב את MPI_Sendrecv ו-MPI_Allreduce. איזון העומס מציין שהזמן המושקע ב-MPI_Sendrecv גדל עם מספר התהליך, בעוד שהזמן עבור MPI_Allreduce פוחת.
    • ג. בדוק את Message Profile תרשים למטה לפינה הימנית התחתונה.
      קידוד הצבעים של הבלוקים מצביע על כך שהודעות העוברות מדרגה גבוהה יותר לדרגה נמוכה יותר זקוקות לפרופורציונליות ליותר זמן בעוד שההודעות העוברות מדרגה נמוכה יותר לדרגה גבוהה יותר חושפות דפוס זוגי-אי זוגי חלש:התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-6

תוצאות הניתוח ההשוואתי מראות שאין באפליקציה דפוסי החלפה מורכבים, ההחלפה מתבצעת רק עם תהליכים שכנים. המידע יהיה חיוני לשיפור ביצועי האפליקציה שלך על ידי שינוי שלב התקשורת כדי לייעל את מודל התקשורת של האפליקציה.

זיהוי תקשורת לא מאוזנת

צפה באפליקציה שלך בנסיבות האידיאליות והשווה את המעקב המקורי file עם האידיאליזציה כדי לבודד אינטראקציות בעייתיות.

  1. צור אידיאליזציה file:
    • א. בחר מתקדם > אידיאליזציה או לחץ עלהתחל-עם-Intel-Trace-Analyzer-and-Collector-fig-7 כפתור סרגל הכלים (אידיאליזציה).
    • ב. בדוק את פרמטרי האידיאליזציה בתיבת הדו-שיח אידיאליזציה (מעקב אידיאלי file שם וטווח זמן להמרה).
    • ג. לחץ על התחל כדי לעשות אידיאליזציה של המעקב שלך.
  2. השווה את העקיבה המקורית לעקיבה האידיאלית:
    • א. בחר מתקדם > דיאגרמת חוסר איזון או לחץ על התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-8(דיאגרמת חוסר איזון) לחצן סרגל הכלים.
    • ב. בתיבת הדו-שיח דיאגרמת חוסר איזון, לחץ על פתח אחר File כפתור, נווט אל המעקב האידיאלי ובחר בו.
    • ג. בחלון דיאגרמת חוסר איזון, לחץ על הלחצן מצב כולל ובחר מצב פירוט.

התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-9

אתה יכול לראות ש-MPI_Sendrecv היא הפונקציה שגוזלת זמן רב ביותר. משקל חוסר האיזון מוצג ב
צבע בהיר ומהווה כ-10% עבור הפונקציה MPI_Sendrecv. זה הזמן שהתהליכים מבלים בהמתנה זה לזה.

שפר את ביצועי האפליקציה שלך על ידי שינוי תקשורת

  1. שפר את הביצועים של אפליקציית MPI על ידי שינוי תקשורת חסימה לבלתי חוסמת.
    בקוד שלך החלף את ה-MPI_Sendrcv הטורי בתקשורת לא חוסמת: MPI_Isend ו-MPI_Irecv. למשלample: קטע קוד מקורי:
    // החלפת גבולות
    void exchange(para* 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->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);
    השתמש בהשוואה של Intel Trace Analyzer view כדי להשוות את היישום המסודר עם היישום המתוקן
    // העתק את העמודה השמאלית למערכים tmp
    if(gr->left != 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->left != 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_Request req[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על:התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-10
  2. השתמש בהשוואה של Intel Trace Analyzer view כדי להשוות את היישום המסודר לזה המתוקן. השוו שני עקבות בעזרת ההשוואה View, הולך ל View > השוו. ההשוואה View נראה דומה ל:התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-11בהשוואה View, אתה יכול לראות ששימוש בתקשורת לא חוסמת עוזר להסיר סדרה ולהפחית את זמן התקשורת של תהליכים.
    פֶּתֶק למידע נוסף על ביצועים ברמת הצומת של היישום שלך, עיין בתיעוד עבור הכלים המתאימים: Intel® VTune™ Profiler ניתוח קוד MPI וניתוח יישומי Intel® MPI באמצעות Intel® Advisor.

למידע נוסף

עיין במשאבים הבאים למידע נוסף על Intel Trace Analyzer and Collector.התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-12התחל-עם-Intel-Trace-Analyzer-and-Collector-fig-13

הודעות וכתבי ויתור

  • טכנולוגיות אינטל עשויות לדרוש הפעלת חומרה, תוכנה או שירות מופעלות.
  • שום מוצר או רכיב לא יכולים להיות מאובטחים לחלוטין.
  • העלויות והתוצאות שלך עשויות להשתנות.
  • © Intel Corporation. Intel, הלוגו של Intel וסימני Intel אחרים הם סימנים מסחריים של Intel Corporation או של חברות הבת שלה. ניתן לתבוע שמות ומותגים אחרים כרכושם של אחרים.
  • מסמך זה אינו מעניק רישיון (מפורש או משתמע, בהסכמה או בכל דרך אחרת) לזכויות קניין רוחני כלשהן.
  • המוצרים המתוארים עשויים להכיל פגמים בתכנון או שגיאות הידועות כ-errata אשר עלולות לגרום למוצר לסטות מהמפרטים שפורסמו. שגיאות מאופיינות עדכניות זמינות על פי בקשה.
  • אינטל מתנערת מכל אחריות מפורשת ומשתמעת, לרבות, ללא הגבלה, האחריות המשתמעת של סחירות, התאמה למטרה מסוימת ואי-הפרה, כמו גם כל אחריות הנובעת ממהלך הביצוע, מהלך העסקה או השימוש במסחר.

מסמכים / משאבים

intel התחל עם Intel Trace Analyzer ואספן [pdfמדריך למשתמש
התחל עם Intel Trace Analyzer and Collector, התחל עם Intel, Trace Analyzer and Collector, Collector

הפניות

השאר תגובה

כתובת האימייל שלך לא תפורסם. שדות חובה מסומנים *