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