כנס אינטל תוכנה בברצלונה – טכנולוגיות חדשות ומגמות

כנס אינטל בברצלונהמאת: אריק ויינשטיין.

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


בכנס הוצגו מגמות וטכנולוגיות חדשות בעולם מרובה הליבות והתכנות הקבילי, שיתוף הפעולה עם חברת מיקרוסופט ואפליקציות שפותחו תוך כדי התבססות מסיבית על מעבדים מרובי ליבות ותכנות מקבילי.
החל מחוות שרתים ומחשבי על שכבר זמן רב מתבססים על חישוב מקבילי, דרך אפליקציות שרצות על מחשבים אישיים מרובי ליבות, מערכות בידור ביתיות ועד למערכות Embedded כמו טלפונים חכמים ונתבי תקשורת – בכולם כבר רואים ונראה יותר בעתיד מעבדים מרובי ליבות שידרשו תוכנות מבוססות עיבוד מקבילי.
הצורך בעיבוד מקבילי עולה בהתמדה בעיקר בגלל כמויות המידע שהולכות וגדלות במגוון רחב של אפליקציות: תמיכה בטכנולוגיות – High Definition, העברת מולטימדיה ברשתות 3G  ו- 4G , עיבודי תמונה ברזולוציות גבוהות – כל אלה מעלים דרמטית את כמות המידע. הגדלת תמונה מ-35 מ”מ ל-70 מ”מ מעלה את כמות המידע לא פי 2 כי אם פי-4 וכמו את כוח המחשוב הנדרש לעיבודה. פועל יוצא נוסף הוא הגידול המהיר בנפחי האחסון ( Storage ) הנדרשים: ב – 5 שנים האחרונות נפחי אחסון גדלו פי 10. מול התפוצצות מידע זו והדרישה לכוח מיחשוב גדול , על פי ריינדרס, חייבים להתמודד עם מעבדים מרובי ליבות ותכנות מקבילי. מפתחי התוכנה חייבים להתחיל לחשוב באופן מקבילי – בעיבוד סידרתי רגיל הם יגיעו לדרך ללא מוצא מהר מאד.
דוגמה ליכולת העיבוד המקבילי במחשבים אישיים ובעתיד גם במצלמות היא יצירת תמונה פנוראמית מרצף תמונות סטיל ( Stitching ). חברת Kolor  מצרפת הציגה בכנס תוכנת עריכה הנשענת על ארכיטקטורה מרובת ליבות במחשב אישי עם כלי העיבוד המקבילי של אינטל ליצירת תמונה הפנוראמית.
לאחרונה העלתה Kolor אתר חדש:
www.paris-26-gigapixels.com שבו ניתן לראות פנוראמית את פריז ע”י תמונה במשקל של 26 גיגה בייט (התמונה “הכבדה” ביותר בעולם) עם אפשרות ל zoom-In  עד לפרטים הקטנים ביותר כמו מספרי מכוניות ( חובה לראות).
בתמונה 1 ניתן לראות את חלוקת העומס האופטימאלית בין 8 הליבות במחשב בזמן יצירת תמונה פנוראמית מתמונות בדידות ע”י התוכנה של חברת Kolor . התוכנה עושה שימוש בספריות המקביליות של אינטל כמו הספריה המתמטית – MKL והספריה לעיבוד תמונות -IPP.
יש אפליקציות שיכולות להסתפק ביכולות המוטמעות במערכות ההפעלה כמו Windows  או Linux לנהל את ריבוי הליבות, אך ישנן הרבה אפליקציות שדורשות ניצול מכסימלי של משאבי המערכת תוך כדי שימוש בתיכנות מקבילי – ועבורן אינטל מפתחת טכנולוגיות מתקדמות של מהדרים (Compilers) כמו גם ספריות לתכנות מקבילי וכלי פיתוח.
בין חוות שרתים עם אלפי ליבות בקצה אחד לביו אפליקציות Embedded בקצה השני יש טווח גדול מאד של אפליקציות שמורצות בסביבת Windows של מיקרוסופט – ובהם אינטל רואה יעד חשוב להטמעת העיבוד המקבילי. אינטל חשפה לפני שנה את ה- Parallel Studio שהוא בעצם Plug-In  לסביבת ה- Visual Studio המוכרת של מיקרוסופט ומטרתו להוסיף יכולות עיבוד מקבילי על ידי תוספות לשפת ה C++ וגם כלים לניפוי שגיאות וניתוח עומסים ( Profiling ).
מיקרוסופט הכריזה על תמיכתה בעיבוד מקבילי ב – Visual Studio 2010 שהושק ממש בימים אלו. התמיכה מתבטאת בהוספת ספריות כמו ה- TPL
(Thread Parallel Library)  וה – PPL Parallel Patterns Library. בנוסף מיקרוסופט משתפת פעולה עם אינטל על שילוב הכלים והספריות של אינטל ב- VS 2010. השילוב כולל ספריות גם ברמות הקרובות יותר לחומרה – כמו ספריית ה- OpenMP לעבודה בזיכרון משותף. שילוב זה יאפשר למפתחים שימוש משולב בטכנולוגיות השונות ללא שום חשש להתנגשויות.
“האתגרים  והסבוכיות בתכנות מקבילי הם גדולים – וכך גם הסיכוי לשגיאות ומצבים כמו Dead Locks או data races שקשים מאוד לגילוי. לשם כך אינטל מציגה כלי פיתוח חזקים לפיתוח אפליקציות מקביליות כמו ה- Thread Checker וה- Parallel Studio. אתגר נוסף הוא היכולת להריץ את האפליקציות מעל מספר משתנה של ליבות וזאת ללא הצורך לשכתב את הקוד מחדש. הספריות לעיבוד מקבילי כמו ה- TBB (Threading Building Blocks)  מאפשרות זאת ע”י אבסטרקציה ובכך גם תומכות במעבדים עתידיים וגם מונעות השקעות גדולות הכרוכות בפיתוח מחדש של הקוד”, ע”פ ג’יימס ריינדרס.
בכנס הוצגו גם מגמות עתידיות בתחום המעבדים, ה- Hybrid Processors: אם עד היום הוספו ליבות נוספות למעבדים בצורה סימטרית  – כלומר ליבות זהות, הרי שבעתיד יהיו כמה סוגי ליבות באות מעבד – חלקם חזקים יותר וחלקים קטנים יותר למטרות מסוימות, גם עם ארכיטקטורות אלו יצטרכו כלי התוכנה לעיבוד מקבילי להתמודד.
אינטל חשפה לאחרונה מעבד נסיוני למטרות מחקר שמכיל 48 ליבות (תמונה-2) על פיסה אחת וכל זה בהספק שיכול לרדת גם ל- 25W. מוסדות מחקר וחברות כמו HP ומיקרוסופט קיבלו מעבדים כאלו לצורך מחקר ופיתוח כלים וטכנולוגיות חדשות. הליבות מחוברות בניהם ברשת פנימית לשם העברת מידע מהירה בעיבוד מקבילי. “מיחשוב ענן על פיסת סיליקון אחת” ע”פ אינטל.
בנוסף לטכנולוגיות וכלי תוכנה קיימים עבוד מקבילי כמו ה- OpenMP ,MPI (שמשמש בעיקר לאשכולות מחשוב, HPC) וספריית ה– Threading Building Block  הפופולארית, הוצגו בכנס טכנולוגיות חדשות לעיבוד מקבילי שיכנסו לשימוש מסחרי במהלך 2010 :
CILKי,CT  ו- OpenCL.
ה Cilk – היא טכנולוגיה שמטמיעה ברמת קומפיילר ה- C++ חלק מהפונקציונאליות של ספריית ה- TBB.

דוגמא לכך היא לולאת for שבשפת C נראית :
/* Matrix Transpose */
for (int i = 0; i < n; i++)
{
for (int j = 0; i< n; i++)
{
b[j][i] = a[i][j];
}
}
ובשימוש ב CILK היא תיראה :
/* Matrix Transpose */
cilk_for (int i = 0; i < n; i++)
{
cilk_for (int j = 0; i< n; i++)
{
b[j][i] = a[i][j];
}
}
היתרון הגדול בהטמעת המקביליות בקומפיילר הוא היכולת להעביר את קוד המקור ללא שינוי ממעבד לדוגמה עם 4 ליבות למעבד עם 8 ליבות – הקומפיילר ידאג לייצר את קוד המכונה המתאים תוך כדי האפשרות לעבוד במקביל גם עם ספריית ה-  TBB.
המעבר משפת C ל- CILK  הוא פשוט : רק לשנות את פקודת ה for  ל- cilk_for
ריינדרס על ה- CT: “טכנולוגיית ה- CT  מביאה עימה פיתרון רחב יותר. המקביליות נמצאת היום בכל רמות המערכת : מספר מעבדים כשבכל מעבד מספר ליבות כשבכל ליבה יכולים להריץ מספר של Threads. בנוסף קיימות טכנולוגיות של אינטל לתמיכה במקביליות של המידע כמו ה- SSE או AVX שתומכים באורכי מילה של 128 ו- 256 סיביות ( SIMD ). ה- CT  תומך ב”מיקבול” המידע (data parallelism) ויאפשר למתכנת לכתוב תוכנית אחת שתדע לרוץ בצורה נכונה מעל כל מגוון הארכיטקטורות הקיימות וגם העתידיות כולל תמיכה ב SIMD. הכלים ידעו להתמודד באופן אוטומטי עם הארכיטקטורה הספציפית כולל האצות חומרה “.
כדי לקדם את השימוש בשפות ובכלים אלו ולנסות ליצור תקינה בעתיד, אינטל פותחת את הקוד של התוכנות ומזמינה חברות נוספות, כמו למשל יצרני קומפיילרים, לייצר כלים תואמים.
ריינדרס רואה בצורך להשתמש במודלים שונים לתכנות המקבילי – דבר שיוצר 3 רמות לתוכנות (תמונה 3): ברמה הגבוהה ביותר מקביליות בין מעבדים ומעבר הודעות בניהם (MPI), ברמה השניה מקביליות בין הליבות והתהליכים בתוך כל מעבד וברמה הנמוכה ביותר מקביליות של המידע עצמו ברמת התהליך או הפקודה. בהתאם לרמות אלו ניתן לחלק גם את הכלים השונים – והמטרה שכולם יעבדו ביחד בצורה חלקה
תחום נוסף שבו חלה פעילות ניכרת מצד אינטל הוא מערכות משובצות (Embedded) כאשר ספינת הדגל הוא מעבד ה- Atom  שתואם לארכיטקטורת אינטל בשאר המעבדים (x86 ). שווקי היעד הם הטלפונים חכמים, מחשבי Netbook ואלקטרוניקה בידורית.

כחלק מאסטרטגית החדירה לתחום ההתקנים הניידים, משתפת אינטל פעולה עם נוקיה בפיתוח מערכת הפעלה קוד-פתוח בשם MeeGo מבוססת לינוקס עם ממשק משתמש מבוסס QT
(www.meego.com). כלי הפיתוח ל- Atom תומכים גם ב Windows וגם ב- Linux כאשר באחרונה הוסיפה אינטל תמיכה בעבודה ברמת החומרה בעזרת ניפוי שגיאות בעזרת חיבור JTAG. סביבה זו מאפשרת פיתוח אפליקציות זמן-אמת על מעבד ה Atom משלב פיתוח החומרה עד לרמת האפליקציות.
וללא נקודה ישראלית אי אפשר: חלק נכבד מכלי פיתוח שהוצגו בכנס פותחו באתר אינטל בחיפה, דבר שמביא לשיתוף פעולה הייחודי לישראל בין אינטל לחברת מאגרי-תוכנה מרעננה המפיצה את כלי התוכנה של אינטל בישראל.
חברת מאגרי-תוכנה זכתה בפרס מיוחד מטעם אינטל על ההישגים שרשמה בתחום זה.

תמונה -1 : חלוקת עומס החישוב בין הליבות בתהליך יצירת תמונה פנוראמית

תמונה -2 : מעבד ניסיוני של 48 ליבות

תמונה 3: החלוקה של הכלים בן הרמות השונות בתכנות המקבילי

תגובות סגורות