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