שיעור 29: רוחב פס ועצימות אריתמטית
כל kernel עושה שני סוגי עבודה: חישוב (פעולות נקודה צפה, FLOPs) והעברת נתונים (בתים מהזיכרון ואליו). שני מדדים פשוטים מאפשרים לנו להבין מה משמעותי. הראשון הוא רוחב פס (bandwidth): כמה בתים הזיכרון מעביר בשנייה. מחשבים אותו כבתים חלקי זמן, וממירים ל-GB לשנייה על-ידי חלוקה ב-1e9. למשל, אם kernel מעביר
דמיין משאית שמביאה לבנים לבנאי. רוחב פס הוא כמה לבנים המשאית מספקת בכל דקה. עצימות היא כמה עבודה הבנאי עושה על כל לבנה. אם הבנאי עושה מעט על כל לבנה (עצימות נמוכה), הוא תמיד מחכה למשאית — הזיכרון הוא הצוואר. אם הוא עושה הרבה על כל לבנה (עצימות גבוהה), המשאית מחכה לו — החישוב הוא הצוואר.
- רוחב פס
- כמות הבתים שהזיכרון מעביר בשנייה. מחשבים כבתים חלקי זמן, וממירים ל-GB/s בחלוקה ב-1e9.
- עצימות אריתמטית
- מספר ה-FLOPs שמבוצעים חלקי מספר הבתים שמועברים מהזיכרון. נמוכה = חסום-זיכרון; גבוהה = חסום-חישוב.
- חסום-זיכרון
- kernel בעל עצימות נמוכה שזמן הריצה שלו נשלט על-ידי רוחב הפס. כדי להאיץ אותו מפחיתים בתים, לא מוסיפים FLOPs.
- חסום-חישוב
- kernel בעל עצימות גבוהה שזמן הריצה שלו נשלט על-ידי יחידות החישוב, כך שהזיכרון אינו הצוואר.