שיעור 28: Occupancy — warps פעילים per SM
כל מעבד-תת (SM, Streaming Multiprocessor) על ה-GPU יכול להחזיק רק מספר מוגבל של warps פעילים בו-זמנית. ה-occupancy מוגדר כיחס: occupancy = warps פעילים / מקסימום warps אפשרי ל-SM. למה זה חשוב? כשל-warp אחד נגמרת העבודה או הוא מחכה לזיכרון, ה-SM יכול לעבור מיד ל-warp אחר ולהסתיר את ההמתנה (latency hi
דמיין מלצר שמטפל בכמה שולחנות בבת אחת. כשבשולחן אחד עוד לא סיימו לבחור מהתפריט, הוא ניגש לשולחן אחר במקום לעמוד ולחכות. ככל שיש לו יותר שולחנות פעילים, פחות זמן הוא מבזבז בהמתנה. אבל אם יש לו יותר מדי שולחנות מכל שולחן הוא מקבל פחות תשומת לב — אז יותר שולחנות זה לא תמיד טוב יותר.
- occupancy
- היחס בין warps פעילים על SM למקסימום ה-warps שה-SM תומך בו. occupancy גבוה עוזר להסתיר השהיות זיכרון.
- SM (Streaming Multiprocessor)
- יחידת העיבוד על ה-GPU שמריצה blocks. למשאבים שלה (registers, shared memory) יש קיבולת מוגבלת שמחלקים בין blocks.
- הסתרת השהיה (latency hiding)
- כש-warp מחכה לזיכרון, ה-SM עובר ל-warp אחר. יותר warps פעילים = יותר עבודה להסתיר בה את ההמתנה.
- מגבלת משאבים
- registers לכל thread, shared memory לכל block, וגודל block — כל אחד יכול להגביל כמה blocks נכנסים ל-SM.