כלי לניתוח Roofline
הכלי Roofline Analysis מציע מודל ביצועים חזותי ואינטואיטיבי שבעזרתו תוכלו להבין את המגבלות הטבעיות של החומרה שמשפיעות על ביצועי התוכנית. באופן ספציפי, הבדיקה מתמקדת בשאלה אם התוכנית מוגבלת לזיכרון או למחשוב, ובמידת הקרבה של הביצועים של התוכנית לביצועים המקסימליים התיאורטיים של החומרה, שמוצגים כ'קו תקרה'.
פלטפורמות נתמכות
TPU: נתמך
GPU: יש תמיכה (בגרסת בטא)
מהו תרשים Roofline
בתרשים קו הגג מוצגת באופן חזותי היחס בין עוצמת הפעולה (FLOPS לכל ביייט שנגיש) לבין FLOPS שהושגו לשנייה.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
צורת 'הגג' נוצרת מהערך הנמוך מבין שיא FLOPS והביצועים האפשריים, בהתאם לרוחב הפס של הזיכרון ולעוצמת התפעול. הנקודה הזו מציינת את עוצמת הפעולה המינימלית הנדרשת כדי להגיע ל-FLOPS שיא.
מידע נוסף על מודלים של קו תקרה זמין במאמר Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures או בנושא Roofline model בוויקיפדיה.
פרשנות של תרשים Roofline
אפשר להציג בתרשים קו העליונה את עוצמת הפעולה ואת מספר הפעולות FLOPS שהושגו בשלבים שונים, בחלקים שונים של התוכנית או בפעולות HLO ספציפיות, כדי לקבל תובנות לגבי צווארי בקבוק בביצועים:
- אם נקודה בתרשים נמצאת בחלק המוטה של קו הגג, סביר להניח שהביצועים מוגבלים על ידי רוחב הפס של הזיכרון (memory-bound). הגדלת עוצמת התפעול (ביצוע יותר חישובים לכל ביייט של נתונים שנגישים) עשויה לשפר את הביצועים.
- אם נקודת נתונים נמצאת בחלק השטוח של קו הגג, סביר להניח שהביצועים מוגבלים על ידי יכולת המחשוב (מוגבלים על ידי המחשוב). במקרה כזה, הגדלת עוצמת הפעילות לא תוביל לשיפור משמעותי בביצועים, אלא אם ניתן לנצל בצורה טובה יותר את שיא ה-FLOPS של החומרה.
- המרחק של נקודת נתונים מהקו העליון מציין את פוטנציאל השיפור של הביצועים. אם המרחק גדול יותר, יש הזדמנויות לבצע אופטימיזציה של התוכנית כדי לנצל טוב יותר את יכולות החומרה.
רכיבי ממשק
לממשק הכלי של ניתוח קו הגג יש כמה רכיבים עיקריים:
- בקטע 'פרטי המכשיר' מתוארים מפרטי החומרה. המפרטים האלה משמשים לציור סטטי של 'קוי הגג' בתרשים.
- תרשים קו תקרה ברמת התוכנית עם נקודות נתונים שתואמות לנתונים הבאים:
- משך הזמן הכולל של הפרופיל.
- משך הזמן הכולל של הפרופיל, אבל עם נתוני FLOPS/s שמקורם בספירת הביצועים של החומרה, ולא במודלים ברירת המחדל של עלויות שמחושבים על ידי המהדר של XLA.
- הממוצע של השלבים שהושלמו במהלך משך הפרופיל (במשימות אימון. אפשר להתעלם ממונחי השלבים במשימות של הסקת מסקנות).
- כל שלב מלא שהופעל במהלך משך הפרופיל (במשימות אימון. אפשר להתעלם ממונחי השלבים במשימות של הסקת מסקנות).
- בתרשים קו הגג יש גם את המאפיינים הבאים:
- אפשר לבחור לכלול או להחריג פעולות של קמפיינים להוספת מודעות או קמפיינים להסרת מודעות באמצעות התפריט הנפתח.
- כשמעבירים את העכבר מעל אחת מנקודות הנתונים בתרשים, מוצג מידע נוסף רלוונטי, כמו נתוני רוחב פס של זיכרונות שונים, משך הזמן הכולל שהיה בשימוש וכו'.
- טבלת נתונים סטטיסטיים ברמת התוכנית שמספקת פרטים נוספים לגבי כל נקודה בנתונים, כמו אחוז ניצול הזיכרון המקסימלי, אחוז שיא של קצב FLOP וכו'.
- תרשים קורת גג שני שמספק מידע מפורט יותר, עם נקודות נתונים של 1,000 הפעולות שגבו את הכי הרבה זמן במהלך תקופת הפרופיל:
- בדומה לתרשים קו הגג ברמת התוכנית, כשמעבירים את העכבר מעל כל נקודה על הגרף מוצג מידע נוסף על הפעולה הזו.
- אפשר להתאים אישית את נקודות הנתונים שמוצגות בתרשים בדרכים הבאות:
- הכללה או החרגה של פעולות של קמפיינים להוספת מודעות בתחילת הסרטון וקמפיינים להוספת מודעות בסוף הסרטון באמצעות תפריט נפתח.
- סינון לפי קטגוריות ספציפיות של פעולות.
- סינון של פעולות שמחויבות למשאב מסוים.
- סינון לפי פעולה ספציפית בעלת שם.
- טבלת נתונים סטטיסטיים שנייה, שדומה לטבלה ברמת התוכנית, ומספקת פרטים נוספים לגבי כל נקודה על הגרף.
בכל הקטעים המתוארים למעלה, יש תמיכה בזיכרונות הבאים:
- ב-TPU: HBM, VMEM, CMEM (TPU v4 בלבד).
- ב-GPU: HBM, L1/SharedMem.
- הקווים התואמים בתרשים מופיעים רק אם היו פעולות במהלך משך הפרופיל שהיו כפופות לזיכרון הזה. לדוגמה, אם כל הפעולות מוגבלות ל-HBM או לעיבוד, לא יופיעו שורות של VMEM או CMEM.