שיעור 14: Coalescing — המושג של גישה מאוחדת לזיכרון גלובלי
זיכרון גלובלי (device DRAM) הוא הזיכרון הגדול אך גם האיטי ביותר ב-GPU, וה-hardware קורא אותו במנות (transactions) של בלוק כתובות רצוף — לרוב 128 בתים בכל פעם. כשכל 32 ה-threads ב-warp ניגשים לכתובות רצופות, למשל a[i] עם i = האינדקס הגלובלי, כל המנה אחת מספקת את כולם: זו גישה מאוחדת (coalesced). אבל
דמיין דלי מים שמשקה 32 שתילים. אם השתילים בשורה צמודה, מזיגה אחת מרטיבה את כולם. אם כל שתיל רחוק 32 צעדים מהבא, צריך 32 הליכות נפרדות לדלי עבור אותם 32 שתילים — אותה כמות מים, פי 32 עבודה.
- איחוד גישות (coalescing)
- מצב שבו threads עוקבים ב-warp ניגשים לכתובות רצופות, כך שה-hardware משרת את כולם במנת זיכרון אחת.
- מנת זיכרון (transaction)
- בלוק כתובות רצוף (לרוב 128 בתים) שה-hardware קורא או כותב בפעולה אחת מול זיכרון גלובלי.
- צעד (stride)
- המרחק בין כתובות שני threads שכנים. stride של 1 הוא רצוף (מאוחד); stride גדול מפזר את הגישות.
- רוחב פס (bandwidth)
- כמות הבתים השימושיים שמועברים מול הזיכרון ליחידת זמן. גישה מפוזרת מבזבזת אותו כי כל מנה מביאה בתים מיותרים.