בכרטיס המסך של כל מחשב מצוי מעבד גרפי (Graphical Processing Unit, או בקיצור - GPU), המאפשר להוריד מהמעבד הראשי (CPU) עומס בזמן ביצוע חישובים גרפיים שונים. להבדיל מבקרי הגרפיקה הראשונים, ניתן כיום לתכנת את המעבדים הגרפיים, בדומה למעבדים אחרים. למשל, המעבדים הגרפיים של חברת nVIDIA ניתנים לתכנות באמצעות שפת CUDA, אשר מהווה הרחבה של שפת C.
בשנים האחרונות, עם התגברות הדרישה לכח חישוב חזק יותר, יותר מפתחי תוכנה "זונחים" את ה-CPU, המכיל cores בודדים, ומתחילים לנצל את מאות ה-cores הממתינים בחוסר מעש ב-GPU לצורך ניתוח כמויות גדולות של מידע באופן מקבילי. בעקבות כך, אפליקציות רבות מתחומים שונים עושות כיום שימוש במעבדים גרפיים. בין היתר, המעבד הגרפי מבצע כיום משימות עיבוד אות, תמונה ווידאו, חישובים פיננסיים, סימולציות כימיות, ניתוחים סיסמיים, חישובים של אלגברה לינארית, סימולציות של דינמיקת נוזלים ומשימות מעולם הביולוגיה החישובית. למעשה, במקרים רבים, ה-GPU שבכרטיס המסך משמש כיום ככח עבודה זול וזמין לטחינת נתונים (data crunching) אשר אפילו לא יבואו לידי ביטוי על גבי המסך...
התוצאה הישירה של שימוש ב-GPU על מנת לבצע חישובים שונים הינה האצה של משך הזמן הנחוץ לקבלת תוצאות. למשל, בסמינר שנערך בסוף 2010 ראיתי דוגמה לאלגוריתם שהיה רץ במשך 180 שעות (יותר משבוע), והיום הסימולציה נמשכת פחות מ-6 דקות ! רבים בארץ כבר גילו את הפוטנציאל הטמון ב-GPU, והדבר הפך את ישראל לאחת המדינות המובילות בתחום. ולראיה, המפגש המקצועי השנתי של nVIDIA התקיים ב-2011 בישראל, וזו היתה הפעם הראשונה בה הוא נערך מחוץ לארצות הברית !
מעל מיליון משתמשים מתכנתים כיום ב-MATLAB, , ונהנים מיכולות ניתוח הנתונים והויזואליזציה של הכלי אשר הולך ומשתבח עם השנים, והמהווה בסיס לעוד כ-90 כלים נוספים, ביניהם ה-Parallel Computing Toolbox. החל מגרסת R2010b של הכלי, אשר יצאה בספטמבר 2010, נוספה לו היכולת לתקשר ישירות עם ה-GPU, בשלוש דרכים:
1. אפשרות להפעיל 150 פונקציות built-in של MATLAB הפועלות על מערכים ישירות על ה-GPU, עם מינימום שינוי של קוד קיים.
2. אפשרות להמיר פונקציות שכתבתם ב-MATLAB (המכילות אחת או יותר מ-109 פונקציות נבחרות) לקוד ב-GPU native language היכול לרוץ בצורה מקבילית על ה-GPU . ושוב, עם מינימום שינוי של קוד קיים.
3. אפשרות לקרוא לקוד CUDA קיים ישירות מתוך MATLAB .
למעשה, ב-MathWorks השלימו את בניית הכביש המהיר המחבר בין סביבת ה-MATLAB, על כל יתרונותיה, לבין חומרת ה-GPU, על כל הפוטנציאל הטמון בה, וניתן כעת לתקשר עם ה-GPU ישירות מתוך MATLAB, מבלי לדעת CUDA ! אגב, אין בעיה לעבוד על תחנה בעלת מספר כרטיסי GPU, או מול חוות כרטיסי GPU. ובנוסף, ניתן החל מגרסת R2011b להריץ על גבי ה-GPU אפליקציות אשר קומפלו באמצעות ה-MATLAB Compiler. אני חושב שמדובר בהתקדמות משמעותית מאז הפוסט הקודם שלי בנושא זה, לפני קרוב לשנה.
איזה GPU יש לכם במחשב? כמה ליבות יש בו? האם ניסיתם להאיץ את ביצועי קוד ה-MATLAB שלכם על ידי שימוש ב-GPU?
בשנים האחרונות, עם התגברות הדרישה לכח חישוב חזק יותר, יותר מפתחי תוכנה "זונחים" את ה-CPU, המכיל cores בודדים, ומתחילים לנצל את מאות ה-cores הממתינים בחוסר מעש ב-GPU לצורך ניתוח כמויות גדולות של מידע באופן מקבילי. בעקבות כך, אפליקציות רבות מתחומים שונים עושות כיום שימוש במעבדים גרפיים. בין היתר, המעבד הגרפי מבצע כיום משימות עיבוד אות, תמונה ווידאו, חישובים פיננסיים, סימולציות כימיות, ניתוחים סיסמיים, חישובים של אלגברה לינארית, סימולציות של דינמיקת נוזלים ומשימות מעולם הביולוגיה החישובית. למעשה, במקרים רבים, ה-GPU שבכרטיס המסך משמש כיום ככח עבודה זול וזמין לטחינת נתונים (data crunching) אשר אפילו לא יבואו לידי ביטוי על גבי המסך...
התוצאה הישירה של שימוש ב-GPU על מנת לבצע חישובים שונים הינה האצה של משך הזמן הנחוץ לקבלת תוצאות. למשל, בסמינר שנערך בסוף 2010 ראיתי דוגמה לאלגוריתם שהיה רץ במשך 180 שעות (יותר משבוע), והיום הסימולציה נמשכת פחות מ-6 דקות ! רבים בארץ כבר גילו את הפוטנציאל הטמון ב-GPU, והדבר הפך את ישראל לאחת המדינות המובילות בתחום. ולראיה, המפגש המקצועי השנתי של nVIDIA התקיים ב-2011 בישראל, וזו היתה הפעם הראשונה בה הוא נערך מחוץ לארצות הברית !
מעל מיליון משתמשים מתכנתים כיום ב-MATLAB, , ונהנים מיכולות ניתוח הנתונים והויזואליזציה של הכלי אשר הולך ומשתבח עם השנים, והמהווה בסיס לעוד כ-90 כלים נוספים, ביניהם ה-Parallel Computing Toolbox. החל מגרסת R2010b של הכלי, אשר יצאה בספטמבר 2010, נוספה לו היכולת לתקשר ישירות עם ה-GPU, בשלוש דרכים:
1. אפשרות להפעיל 150 פונקציות built-in של MATLAB הפועלות על מערכים ישירות על ה-GPU, עם מינימום שינוי של קוד קיים.
2. אפשרות להמיר פונקציות שכתבתם ב-MATLAB (המכילות אחת או יותר מ-109 פונקציות נבחרות) לקוד ב-GPU native language היכול לרוץ בצורה מקבילית על ה-GPU . ושוב, עם מינימום שינוי של קוד קיים.
3. אפשרות לקרוא לקוד CUDA קיים ישירות מתוך MATLAB .
למעשה, ב-MathWorks השלימו את בניית הכביש המהיר המחבר בין סביבת ה-MATLAB, על כל יתרונותיה, לבין חומרת ה-GPU, על כל הפוטנציאל הטמון בה, וניתן כעת לתקשר עם ה-GPU ישירות מתוך MATLAB, מבלי לדעת CUDA ! אגב, אין בעיה לעבוד על תחנה בעלת מספר כרטיסי GPU, או מול חוות כרטיסי GPU. ובנוסף, ניתן החל מגרסת R2011b להריץ על גבי ה-GPU אפליקציות אשר קומפלו באמצעות ה-MATLAB Compiler. אני חושב שמדובר בהתקדמות משמעותית מאז הפוסט הקודם שלי בנושא זה, לפני קרוב לשנה.
איזה GPU יש לכם במחשב? כמה ליבות יש בו? האם ניסיתם להאיץ את ביצועי קוד ה-MATLAB שלכם על ידי שימוש ב-GPU?
השאלה מתי נקבל OpenCL במקום CUDA.
השבמחקכמו כן, מתי נראה קומפיילר של 64 ביט בילט אין ב- MATLAB?
MathWorks בחרה להיכנס לעולם האצת הביצועים על ידי שימוש ב-GPU דרך סביבת CUDA, כיוון שהיא ותיקה יותר מהסביבות האחרות, וכיוון שהיא תומכת בחישובים מתמטיים ב-Double precision ובאופרטורים תואמי IEEE. כאשר סביבות ה-GPGPU האחרות, כמו OpenCL ו-DirectCompute, יאמצו את הפיצ'רים האלה, יש סיכוי שתהיה תמיכה גם בהן.
השבמחקבאשר לקומפיילר 64 ביט (למרות שזה לא נושא הפוסט...) - לעת עתה אין כזה שמגיע בילט אין. רשימה של קומפיילרים נתמכים נמצאת כאן:
http://www.mathworks.com/support/compilers/R2011b/win64.html?
ורצוי להדגיש ש-Microsoft Visual C++ Express הוא קומפיילר חינמי.
רועי
מתי יהיה תמיכה ב-fftn ודומיו (או לפחות fft3)?
השבמחקלפי התיעוד של
השבמחקהגרסה הקרובה, R2012a, אפשר להתכונן ל-
GPU computing support for full family of FFT functions for all syntaxes
היי רועי,
השבמחקשאתה אומר "לעת עתה" האם בעתיד אפשר יהיה לצפות לקומפיילר 64 ביט מובנה?
אני אומר לך למה זה מעניין אותי.
אני אוהב לשלב את MATLAB עם Photoshop, בגרסאת ה- 32 ביט זה עובד מעולה מהקופסא.
ב- 64 ביט לא הצלחתי לעשות זאת בגלל מחסור בקומפיילר.
ניסיתי לבצע זאת בעזרת Visual Studio Express ללא הצלחה.
אם תוכל לכתוב מדריך מלווה בתמונות כיצד לבצע אינטגרציה בין ה- 2 ב- 64 ביט ועזרת קומפיילר חיצוני אני אודה לך מאוד.
MathWorks
השבמחקלא מפרסמת את ה-road map שלה...
למידע נוסף, אני מציע שתפנה למרכז התמיכה הטכנית של סיסטמטיקס:
03-7660101