שיעור 6: שני זיכרונות נפרדים — host, device ו-cudaMalloc
עד עכשיו כתבת kernel, חישבת גריד, ומצאת לכל thread את האינדקס שלו. אבל יש פרט אחד שעוד לא דיברנו עליו: איפה בכלל יושבים הנתונים? ל-CPU (ה-host) ול-GPU (ה-device) יש שני זיכרונות פיזיים נפרדים לגמרי. מצביע שמתקבל מ-malloc חי בזיכרון ה-host, ומצביע שמתקבל מ-cudaMalloc חי בזיכרון ה-device. ההפרדה הזו א
ה-host וה-device הם כמו שני משרדים בערים שונות. לכל משרד יש ארונות תיוק משלו, ואי אפשר לפתוח ארון של המשרד השני מרחוק דרך החלון. cudaMalloc זה לשכור ארון ריק במשרד השני (ה-GPU), ו-cudaFree זה לפנות אותו בסוף. בשיעור הבא נלמד איך שולחים מסמכים בדואר בין שני המשרדים.
- זיכרון host
- הזיכרון של ה-CPU. מצביע מ-malloc חי כאן, וקוד ה-host יכול לגשת אליו ישירות.
- מצביע device
- מצביע שמתקבל מ-cudaMalloc ומצביע לזיכרון ה-GPU. אסור לקרוא ממנו ישירות בקוד ה-host.
- cudaMalloc
- מקצה זיכרון על ה-device ומחזיר מצביע device דרך הארגומנט. כמו malloc, אבל הזיכרון חי על ה-GPU.
- cudaFree
- משחרר זיכרון device שהוקצה ב-cudaMalloc. מקביל ל-free עבור זיכרון ה-host.