שיעור 30: מודל ה-Roofline
בשיעור הקודם פגשנו עצימות אריתמטית (FLOPs/בית) ורוחב פס (בתים/שנייה), והבחנו בין kernel חסום-זיכרון לחסום-חישוב. מודל ה-roofline לוקח את שני אלה ומצייר אותם בגרף יחיד שמראה במבט אחד מהי התקרה של הביצועים. הציר האופקי הוא העצימות האריתמטית (FLOPs לבית), והציר האנכי הוא הביצועים שאפשר להשיג (FLOPs לשנ
דמיין גרף עם גג בצורת מדרגה. בצד שמאל הגג עולה באלכסון — שם רוחב הפס מגביל אותך. בצד ימין הגג שטוח — שם מהירות החישוב מגבילה אותך. הפינה שבה האלכסון הופך לשטוח היא נקודת הרכס. אם ה-kernel שלך נופל משמאל לפינה, הזיכרון הוא הבעיה; אם מימין, החישוב הוא הבעיה.
- מודל roofline
- גרף של ביצועים מול עצימות אריתמטית, עם גג משופע (רוחב פס) משמאל וגג שטוח (שיא FLOPs) מימין, שמראה את תקרת הביצועים.
- נקודת הרכס
- העצימות שבה הגג המשופע נפגש עם הגג השטוח: שיא FLOPs חלקי רוחב הפס. משמאלה memory-bound, מימינה compute-bound.
- הגג המשופע
- החלק השמאלי המשופע של ה-roofline. תחתיו הביצועים = רוחב פס כפול עצימות, ולכן kernels שם הם memory-bound.
- הגג השטוח
- החלק הימני השטוח של ה-roofline, בגובה שיא ה-FLOPs של החומרה. kernels תחתיו הם compute-bound ולא יכולים לעבור את התקרה.