מורה נבוכים ל-GPU Computing

סקירה קצרה אודות מעבדי עזר גרפיים, ההתקדמות שלהם בתחום בשנים האחרונות, ההבדלים, מה מומלץ ואיך בוחרים אחד שמתאים לכם? מורה נבוכים

nvidia gpu PD

מאת צביקה ליאור, מנכ״ל משותף EIM ESC.

עד תחילת שנות התשעים התבססה התצוגה הגרפית על המעבד המרכזי. היה כרטיס תצוגה: VGA SUPER VGA שתרגם באמצעות DAC פנימי את המידע הדיגיטלי למידע אנלוגי חזותי והפך כל שילוב של 8 ביטים לגוון צבע (ב-VGA ,256 צבעים) או כל 24 ביטים לגוון בספקטרום של "צבע אמיתי", כלומר מיליוני צבעים. אך כרטיס זה, איכותי ככל שהיה, לא ביצע פעולות בעצמו אלא רק תרגם את המידע הדיגיטלי לגוון פר פיקסל על המסך.

כבר אז היה ברור שמריחת הצבעים על המסך הינה אתגר שהמעבד הסקווסיאלי של אינטל מתקשה להתמודד עימו, נדרש היה מעבד עזר שיודע לעבוד בצורה מקבילית על אלפי פעולות בו זמנית על מנת לטפל בעומק הצבע שנפרס עם התקדמות הטכנולוגיה על שטח גדל והולך של פיקסלים (האתגר היה בתקופה זו מקסימום של 1024X768 פיקסלים בעומק של 24-32 ביט לפיקסל).

זכורה לי ההתרגשות כשיצאו מעבדי העזר הגרפיים הראשונים של חברת DIAMOND וראינו את השיפור המהותי על פני מסך התצוגה, הפיקסלים שנשרכו מאחורי מנועי ה-286 העייפים התחילו לרצד על המסך ולהגיב לכל לחיצת עכבר – לא פחות מנס בראי התקופה.

ואז הגיע תלת מימד

כל האתגר של להאיץ פיקסלים בדו מימד, רחב ככל שיהיה התגמד מול הצורך להאיץ את אותם פיקסלים גם במימד שלישי מה שמכפיל את כמות המידע הדיגיטלי בצורה מפלצתית כמעט.

במקביל להתקדמות משחקי המחשב, גם התחום המקצועי התקדם, תוכנות עריכת תמונה ברבדים רבים וברזולוציות גבוהות הפכו לכלי עבודה של כל גרפיקאי וכל התעשיה מהקולנוע ועד ה-CAD CAM התחילה להשתמש בתוכנות תלת מימד לטיפול בגופים במרחב לכל מטרה כמעט.

ברור שמעבדי עזר גרפיים בקנה מידה אחר היו דרושים וזאת בנוסף להתקדמות האדירה של המעבדים הראשיים מבית אינטל (או AMD). כבר מתחילת הדרך, ברור היה ששתי חברות מובילות את התחום – ATI ו-NVIDIA, הגיימרים שביננו יזכרו לטובה גם את חברת DFX3 (וודו …מישהו זוכר?) שבעצם נתנה את הדחיפה לחברות הנ"ל להתמקצע בתחום התלת מימד ולהצטיין בו. המודל העסקי שלהם עם זאת, בו רק הם ייצרו את הכרטיסים שלהם נכשל והחברות האחרות שיצרו את הצ'יפים לכל היצרנים האחרים, זכו בשוק (גם סביבת הפיתוח שלהן היתה קצת שונה והתבססה על DIRECT X של מיקרוסופט מול OPENGL). בשלב זה הוטמע גם המושג GPU = GRAPHIC PROCESSOR UNIT כמשלים ל-CPU .CENTRAL PROCESSOR UNIT

בשנים האחרונות נרכשה ATI ע"י חברת AMD ובעצם שתי חברות אלה מובילות יחד את שוק המעבדים הגרפיים או "המעבדים המקביליים" למטרות השונות.

בפוסט זה אתייחס בעיקר לפתרונות השונים של חברת NVIDIA אך מראש אציין של-ATI-AMD פתרונות לא פחות טובים וברמה מתחרה לכל רובד שוק בו אדון. למען המשתמש נתמקד במשפחת מוצרים אחת מיצרן אחד.

gamer PD

למה משמש בכלל GPU?

מהותו של המעבד הגרפי (GPU היא בניהול גרפיקה, כלומר מטריצות של פיקסלים. ייחודו הוא בכך שהארכיטוקטורה החומרתית נועדה לביצוע של מספר רב של פעולות באותו הזמן באופן מקבילי (פעולות מטריציוניות).

עם התפתחות הטכנולוגיה החומרתית של המעבדים הגרפים כך שיוכלו לבצע יותר ויותר פעולות בו זמנית עלתה השאלה אם ניתן יהיה לעשות שימוש בקונספט העיבוד המקבילי גם לישומים אחרים. תמונה היא מטריצה, כמו כן שדות חשמליים, שדות מגנטיים, מרחב התדר של פורייה ועוד.

עם ההצלחה של שוק כרטיסי המסך ומעבדי העזר הגרפים למטרה של האצה דו מימדית ותלת מימדית של פיקסלים, התעורר התיאבון בחברת NVIDIA לא רק להשלים את פעולת המעבדים של אינטל בתחום הגרפי אלא לתת האצה גם בתחומים נוספים.

בעצם כל תחום חישובי שנשען על חישוב סקוונסיאלי של מעבדי אינטל, בהינתן לו הכלים המתאימים יוכל להפיק תועלת גם מחישוב מקבילי. בואו ננצל את המדיום ונבין באדיבות חברת NVIDIA את ההבדל בין חישוב מקבילי לחישוב סקוונסיאלי וכך גם את ההבדל בין המעבדים הקלאסיים של אינטל למעבדי העזר של ימינו

חשוב לציין עיבוד מקבילי הוא בראש ובראשונה קונספט תוכנתי, על מנת שתוכנה תוכל להפיק תועלת ממעבדי העזר, עליה להכתב מראש באופן מטריציוני כך שינצל את ריבוי הליבות של המעבד הגרפי.
חברת NVIDIA צברה קהל מפתחים גדול בכך שאיפשרה ניצול מקסמאלי של המעבדים שלה באמצעות סביבת הפיתוח CUDA.

למעשה על מנת לעזור למפתחים להגיע לביצועים גבוהים סיפקה NVIDIA חבילת פיתוח הכוללת סיפריות לביצוע פעולות מטריציוניות סטנדרטיות, באופן הזה הצליחה NVIDIA "לשבות" את המפתחים היות וסביבת הפיתוח שסיפקה תמכה במעבדים מתוצרתה בלבד. סביבת פיתוח לעיבוד מקבילי נפוצה נוספת הינה OpenCL , סביבה זו מהווה מתחרה עיקרית לסביבת CUDA, מכיוון שהיא מאפשרת הרצת תוכניות מקביליות על חומרה הטרוגנית, כגון: CPU‏, GPU‏, DSP, ו-FPGA.

חשוב גם להבין שעיבוד מקבילי לא יכול להחליף לחלוטין את העיבוד הטורי לכן האינטראקציה בין מעבדי ה CPU הסטנדרטיים לבין מעבדי ה-GPU הכרחית.

סרטון המונה ליזה של NVIDIA

ברור מהסרטון שהכוח של GPU מגיע ממספר הליבות הרב שלו. הדור הראשון של המעבדים הגרפים בהם השתמשו לחישובים הכיל מעל ל-100 ליבות לכל מעבד גרפי והיום מעל 1,000 (תלוי במודל). משמע אנו עוסקים "בכוח ההמון". המון ליבות שכל אחת עושה פעולה אחת פשוטה והתוצאה של כל הליבות ביחד שכל אחת התמקדה רק בגוון אחד, היתה "מונה ליזה".

העקרון הזה נכון לכל תוכנה שנעזרת בחישוב מקבילי ובכוח "המון הליבות". בניגוד ל-CPU שמריץ המון פעולות מורכבות אחת אחרי השניה ,מליוני פעמים בשניה באמצעות ה-GPU ניתן להריץ באופן סימולטני (מקבילי) מיליוני פעולות בו זמנית.

שוב, זה הסבר פשטני לעיקרון. אין צורך לספור כאן ליבות ולהכנס לארכיטקטורה של הצ'פסט ו\או הקוד.
הסרטון, ממחיש את ההבדל וקצת מקצין אותו. המהות נכונה אך האמת היא שהתותח של אינטל יורה הרבה הרבה יותר מהר, ולא כל פעולה ניתן לבצע עם התותח של NVIDIA. המודל הנכון, הוא לשלב בין התותחים ולתת באלנס מתאים בין חישוב מקבילי לסקוונסיאלי.

1

לדוגמה: אני יכול להשתמש בתוכנה לדחיסת וידיאו שלא עברה אופטימיזציה עם CUDA במחשב בו יש שני מעבדי XEON וארבעה כרטיסי GPU (עוד מעט נדבר איזה) ולא לראות שום שיפור בביצועים. אותה תוכנה בגרסה מתקדמת יותר שכבר תומכת ב-CUDA תעשה את העבודה ברבע זמן. (נתונים אמיתיים "מהחיים״).

מהפסקה האחרונה אתם כבר יכולים להבין, שעיקר הכוח במערכות מקצועיות מבוססות GPU, לא מגיע מהוספת כרטיס אחד (אפילו שיש לו אלף ליבות) אלא מארכיטקטורות מורכבות המבוססות על עד שמונה כרטיסים למארז בודד. ומערכי HPC – "מחשבי על" המבוססים על מספר שרתים (עד מאות ואלפים) המקושרים בינהם בתקשורת נתונים מהירה (לרוב IB-INFINIBAND) ושולחים לעבודה מאות מעבדי אינטל CPU ביחד עם עשרות אלפים ליבות GPU – זו ארכיטקטורת אשכול חישובים ומגדירה מחדש את תחום מחשבי העל בעולם.

התרשים הבא יכול להדגים את השילוב המוצלח של CPU-GPU ממחשב / שרת בודד ועד לאשכול מחשבים שנבנה נכון ומוכן לעבודה:

2

 

3

4

בשנים האחרונות, חברות תוכנה רבות קפצו על עגלת ה-GP-GPU (כך נקרא התחום GPGPU – General-Purpose computation on Graphics Processing Units) ועשו אופטימיזציה ושינוי של קוד התוכנה שלהם כך שישתמש ב-CUDA ויעניק האצה משמעותית ע"י שימוש במאיצים גרפים.

בין התחומים המפיקים תועלת משימוש ב-GPU ניתן למנות:
1. תוכנות CAD-CAM.
2. תוכנות תלת מימד.
3. תוכנות לעריכת וידיאו.
4. תוכנות לתחום הסיסמולוגי ו-OIL AND GAS
5. תוכנות חישובים כ-MATLAB
6. תוכנות הנדסיות כ-ANSYS
7. תוכנות "סופר מקצועיות" לקהל מצומצם כתוכנת CST לחישוב שדות מגנטיים.

לכל אחת המהתוכנות הללו ישנה קונפיגורציה מומלצת ומאושרת (לרוב באתר החברה) ובשנים האחרונות הקמתי מערכים רבים של CPU-GPU עבור כל אחת מהתוכנות המוזכרות לעיל במערכים שונים המתחילים בשרת בודד ומסתיימים בעשרות שרתים ו-GPU במערכי CLUSTER.

עכשיו – קצת מקום למעט ויכוחים מקצועיים (אנשי "רק לינוקס" למקום רוץ).

החברות המובילות, כאמור AMD-ATI ו-NVIDIA בעצם מפתחות כל מספר שנים דור של צ'יפים שמהווים את הבסיס לקו המוצרים שלהן.

המוצר הסופי הינו כרטיס גרפי, או כרטיס חישובים שמבוסס על הצ'יפ מהסדרה החדשה וכולל כמות משתנה של זיכרון מסוגים שונים ומהירויות שונות, לרוב בממשק PCI-E X16 GEN 3. אותם צ'יפים (מכל סדרה וכל שם קוד מ"פרמי" ועד) מיושמים ב-NVIDIA על סדרה של כרטיסים שממשיכה לפנות לקהל הגיימרים ומתהדרת שנים במותג GEFORCE. אותם צ'יפים מיושמים על סדרה של כרטיסים שמיועדת לשוק העסקי, לעיצובי גרפיקה ועבודה עם תלת מימד ונושאת בגאון את השם QUADRA. ואותם צ'יפים מיושמים על סדרה של כרטיסים שמיועדת לשוק המפתחים והמשתמשים הכבדים בתוכנות המקצועיות שציינתי לעיל ומכונה ב-NVIDIA – TESLA.

5

בואו נעשה קצת סדר

בעולם ובמיוחד בישראל, יש בילבול רב בנוגע למתי להשתמש בכל אחת מהסדרות הנ"ל שכמובן העלות הכספית שלהן שונה לחלוטין וישנם הבדלים של עשרות ומאות אחוזים בין כרטיסים שבסוף נושאים את אותם צ'יפים. השיקול הכספי מהווה תמריץ לחברות רבות להשתמש במעבדים גרפים מהסדרה הראשונה – GEFORCE למטרות מקצועיות מהסדרה השניה והשלישית. האם הן צודקות? אז במה להשתמש, מתי? ולמה?

אז ראשית כל אציין, יש הבדלים בין הכרטיסים:

הכרטיסים מהסדרות המקצועיות מיושמים על PCB איכותי יותר ועובדים מול זיכרון ECC REG, מושג שנהיר וחשוב לכל מי שעובד בתחום השרתים.

הכרטיסים מיועדים לעבודה 24/7 במשך חמש שנים ולא לשעתיים, שלוש ביום שמיועדים להם כרטיסי המשחק למינהם.

כרטיסי ה-TESLA אף מתוכננים עם קירור פסיבי ייחודי שמאפשר להכניס כרטיסים רבים בשרתי 1U ולהנות מזרימת האוויר המוגברת בשרתים אלה.

יש הבדלים בין הדרייברים המסופקים עם הכרטיסים. הדרייברים שמגיעים עם כרטיסי QUADRA יעניקו האצה וקטורית טובה יותר לעומת כרטיסי ה-GEFORXCE שמאיצים בעיקר פוליגונים וציפוי משטחים.

הדרייברים שמגיעם עם כרטיסי ה-TESLA יעניקו אופטימיזיה מלאה לתוכנות חישובים המותאמות ל-CUDA וכאמור תכנון הכרטיס הפיזי מתאים יותר ליישום בשרתים מסוגים שונים.

אבל עדיין נותרו מספר שאלות לא פותרות:

1. האם GEFORCE לא יעניק כלל האצה לתוכנות אלא רק למשחקים?
2. האם הפער העצום במחיר מצדיק את ההבדלים "הלא כל כך" גדולים המצויינים לעיל?
3. מה מומלץ לשימוש תעשייתי?
4. מתי ואיך נבחר בפתרון COST EFFECTIVE?

אז לתשובות (למיטב נסיוני) ובגוף שני לשם הנוחות:

1. למי שמחפש האצת עזר למחשב לתוכנות עיצוב וכו׳ , כרטיסי ה-GEFORCE יתנו מענה לא רע בכלל. אם יש לך תחנת עבודה ואתה עובד בפוטושופ ואין לך כסף לכרטיס QUADRA מתקדם, אז GEFORCE מהסדרות האחרונות, 980 או TITABN-X במיוחד הינם מפלצות עבודה שאמנם מיועדות למשחקים אך יאיצו גם תוכנות אחרות בצורה לא רעה בכלל (למרות חוסר אופטימיזציה של הדרייבר).

2. הפער במחיר אינו אינו סיפור חדש, שנים שאינטל מייצרת מעבדים דומים וגובה מחירים אחרים לחלוטין בהתאם למשתמש ולשימוש (מעבדי XEON מול i7 הינה דוגמא מצויינת לכך – במהות אלו אותן ליבות), מדובר כאן בסוג של "רישוי" שמתבטא בדרייבר שמגיע עם הכרטיס. משמע אם אתה משתמש מקצועי ורוצה דרייבר מקצועי שיעשה לך אופטימיזציה לקוד ויחסוך לך זמן עבודה יקר (וזמן הוא כסף) תשלם בשביל זה.

3. אם אתה עובד על תוכנות מקצועיות בתעשייה בהן כל רישוי עולה אלפי דולרים לכל ליבה של אינטל, אז תרכוש כרטיסי TESLA ותשלם רישוי גם ל-NVIDIA, תקבל כרטיסים אמינים יותר, עם אחריות 24/7 והעלות עדיין נמוכה יחסית לתוכנה. כמו שמחיר הרישוי לכל כרטיס גרפי הוא כדאי לעומת מחיר הרישוי לכל ליבה של XEON (רישוי התוכנה המקצועית -כוונתי).

4. כאמור, אם תקציבך מוגבל ואתה רוצה האצה טובה במחיר טוב , תקנה תחנת עבודה איכותית עם ספק כוח אימתני וכרטיס אחד עד ארבעה מסוג GEFORCE 980 ועד TITAN-X. תקבל תוצאות מדהימות באלפי דולרים בודדים. אם אתה חי מעיצוב גרפי וזמני רינדור ותצוגה מהותים לך ואתה רוצה להשאיר "רינדורים" למשך לילות – תשקיע בכרטיסי QUADRA, כרטיס זה הינו "המלך ", 5000-6000M יעבדו ללא הפסקה, יש להם דרייברים שעברו אופטימזיה לתוכנות הרינדור וההשקעה הכספית תשתלם.

5. אם אתה בונה "קלסטר" HPC בהשקעה של עשרות אלפי דולרים כהתחלה – לך רק על TESLA. אתה צריך קירור פסיבי, אתה צריך אחריות מסביב לשעון ועבודה במשך שנים ולא תוכל להרשות שכרטיסי GEFORCE ישרפו לך פעמיים בחודש (אני , לדוגמא, לא אתן אחריות לחילול קודש כזה) או סתם יתחילו לתת "שגיאות" בעבודה. שלא תוכל להרשות לעצמך.

לבסוף, אם נסתכל על המגמה המובילה בעולם החישובים המקבילים לא נוכל להתעלם כמובן מ-Top 500 Supercomputers. מחשבים אילו נמדדים במדד של PETA FLOPS או בקיצור (10 בחזקת 15) פעולות של הנקודה הצפה בשנייה (פעולות מתמטיות מדויקות מכריחות את תהליך העיבוד לעבוד בשברים ולא במספרים שלמים ולכן הנקודה היא הצפה).

בהצצה מהירה על הרשימה של 10 המובילים:

אנו רואים כמות ניכרת של מחשבי על, אשר כהשלמה ליכולת העיבוד של המעבדים הקיימים נעשה שימוש בכרטיסי GPU מסוג TESLA. יתרה מכך, אם תבחנו את המאמר שעוסק בהדגשות. פיסקה חשובה מאוד מדברת על המחשב במקום השני, אשר ניקרא CRAY XK7 TITAN ושייך למשרד האנרגיה האמריקאי.

המחשב הנ"ל אשר נמצא ב-Oak Ridge National Laboratory מגיע ל-17.59 Pflops, כאשר הוא צורך פחות אנרגיה מכולם. הוא מגיע לכך ע"י שימוש ב-261,632 ליבות המבוססות K20 שהוא GPU מסוג TESLA. וזאת רבותי המגמה, שיטת שיתוף המעבדים הגרפים כהשלמה ותוספת למעבדים המקבילים נמצאת בעליה מתמדת גם בגלל עלות תועלת וגם בגלל הספק נמוך יחסית לכוח עיבוד.

הכתבה בחסות EIM E.S.C

חברת EIM E.S.C מובילת שוק בתחום מחשוב על ומערכות משובצות מחשב, יצור מערכות מחשוב לפי צרכי לקוח והקמת פתרונות מלאים ל- HPC , STORAGE ותחנות עבודה. רוצים ללמוד עוד על GPU Computing? התחילו כאן

כתב אורח

אנחנו מארחים מפעם לפעם כותבים טכנולוגים אורחים, המפרסמים כתבות בתחומי התמחות שלהם. במידה ואתם מעוניינים לפרסם פוסט בשמכם, פנו אלינו באמצעות טופס יצירת קשר באתר.

הגב

4 Comments on "מורה נבוכים ל-GPU Computing"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
Alon
Guest

מה לגבי מעבדים מרובי ליבות (CPU)? הרי זה גם נחשב חישוב מקבילי. מה ההבדל בין CPU מרובה ליבות ל-GPU?
ומה לגבי GPU אשר משולב ב-CPU (מעבדי אינטל לדוגמא)?

יצחק
Guest
ב"ה כתבה לעניין, אבל צריך להרחיב מעט יותר, א. מה עוצמת מעבד בודד של GPU ביחס ל CPU ב. האם GPU בודד הוא עצמו מקבילי או שכל אחד יכול לבצע מטלה אחת בלבד ג. מדוע אינטל לא בונה מעבדים בכמויות של אלפי מעבדים כמו ש Nvidia עושה , מה המגבלה שמונעת ממנה ?. ד. איך ה GPU מתמודד עם קריסה של אחד מאלפי המעבדים, היות ובאופן טבעי הסיכוי לכשל גבוה הרבה יותר ? ה. בדוגמת הווידאו, רואים את הרעיון של ה GPU, אבל איזה מעבד מכין את כל שאר המעבדים למטלה, כי המעבד הזה אמור לארגן עבור כל פיקסל את… Read more »
אורי
Guest
מגיב מקצת ניסיון בתחום, ראשית GPU לא הולך להחליף את ה-CPU, לפחות לא בזמן הקרוב GPU טוב לעיבוד של הרבה מאוד פעולות פשוטות במקביל, לפעולות מורכבות הוא עדיין לא מתאים (בשביל זה יש את ה-CPU) ה-GPU לא יהיה טוב לפעולות שבהן נדרש זמן תגובה קצר (Latency), אבל הוא יהיה טוב יותר לפעולות שבהן יש הרבה עבודה לעשות והוא יכול לפעמים בצורה יעילה לשפר את זמן העיבוד הארוך בפעולות כמו רינדור, deep learning ועוד, תודות ל-throughput הגבוה שלו אנסה להתייחס לשאלות שלך: א. אי אפשר להשוות עוצמה בין GPU לCPU, כי לא משווים תפוחים לתפוחים, הם נועדו לפעולות שונות, כל אחד… Read more »
משהו
Guest

הייל nvidia

wpDiscuz

תגיות לכתבה: