אשכולות מחשבים לביצועי-על (HPC High-Performance-Cluster)

Computers Clusters

מאת: אריק ויינשטיין. השימוש באשכולות מחשבים (Computers Clusters ) ומחשבים מרובי ליבות (Multi core  )  הולך וגדל במהירות – ואיתו גם עולה הסיבוכיות של פיתוח תוכנות ואפליקציות שיינצלו בצורה אופטימאלית את ריבוי המעבדים.

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

לפי אתר ה- TOP500  ( top500.org ),  המדרג את רשימת 500 מרכזי המחשוב  החזקים  בעולם , מרכז המחשוב של מעבדות Oak Ridge  בטנסי –ארה”ב  נמצא במקום הראשון והוא כולל 224,162 ליבות ובמקום השני מרכז מחשוב בניו-מקסיקו עם 122,400 ליבות  ( גם לישראל אגב יש 2 נציגות ברשימה) .
 
אינטל – ענקית השבבים היא אחת משחקניות המפתח בתחום זה , ומפתחת במקביל למעבדים גם כלי תוכנה מתקדמים כדי לאפשר למפתחי התוכנה מקביליות מרבית וניצול מכסימלי של משאבי המעבדים.

פגשתי את מנהל הפיתוח העסקי של קבוצת פתרונות תוכנה של אינטל באירופה : רלף דה-וורגני  ,את וורנר קרוטס- המנהל הטכני (שניהם מגרמניה) ואת חיים רון ממאגרי תוכנה המייצגת את קבוצת תוכנה של אינטל,  לשמוע על פתרונות התוכנה של אינטל לסביבת מרובת ליבות ואשכולות מחשוב

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

המקביליות מרמת הפקודה  ועד לרמת אשכול המחשוב
 הימים של מעבד יחיד שמריץ בצורה טורית את התוכנה – עברו . המקביליות נמצאת היום בכל רמות המחשוב :
מהרמה הגבוהה ביותר של אשכול המחשוב הכולל צמתים (nodes ) רבות, כל צומת מכילה כמה מעבדים ( processors) , כל מעבד מכיל כמה ליבות ( cores) , כל ליבה יכולה להריץ 2 אפליקציות במקביל ע”י שימוש בטכנולוגיית ה-   Hyper Threading ועד לרמת הפקודות שמבוצעות במקביל ע”י שימוש ב- pipe line .

 המתכנת צריך להיות מודע למקביליות ברמות השונות ולנצל אותה.

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

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

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

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

התקשורת בין הצמתים נעשית בעזרת חיבורים (Interconnect ) מהירים כמו  10G-Eth או 
   Infiniband  , כשהאחרון תומך בקצבים של עד  40G 

התקן  הדומיננטי היום בשוק ליישום התקשורת בתוך הצומת בין המעבדים, הליבות והתהליכים (threads  ) הוא openMP ולתקשורת בין הצמתים התקן הנפוץ הוא MPI   ( Message Passing Interface)
היתרון הגדול בשימוש בתקנים אלו שהוא הופך את האפליקציה כמעט לוירטואלית ולבלתי תלויה בחומרה של האשכול מחשוב. הוירטואליזציה  נעשית ע”י השימוש בשפת DAPL  (  Direct Access Programming Library  ) שתומכת בממשק תוכנתי סטנדרטי ( API )  לחומרה. התוצאה  – ניתן להעביר את האפליקציה בקלות  לאשכול מחשוב אחר עם חומרה אחרת כאשר נדרש להחליף רק את הדרייברים של הרשת ( Interconnect ) 

אשכולות חישוב מודרניים בנויים על שרתים מרובי ליבות עם 4 או 8 ליבות ולהאצת ביצועים  בתוך המעבדים  אינטל פיתחה טכנולוגיות נוספות  כמו ממשק  ה- QPI (Quick Parallel Interface)  לגישה מהירה לזיכרון וה- Hyper Threading  שמאפשר הרצת  2 אפליקציות במקביל על כל ליבה ( אפקטיבית מכפיל את ספר הליבות במעבד )

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

– כלי קומפילציה ל-C , C++   ו- Fortran  שתומכים בכל הארכיטקטורות של אינטל ומייצרים קוד יעיל ברמת הפקודה והלולאות
– ספריות openMP  ו- MPI לפיתוח אפליקציות מקביליות ברמת הליבה וברמת אשכול מחשוב בהתאמה. 
– ספריות מתמטיות למעבדים מרובי ליבות : מתמטיקה ווקטורית, הצפנה , התמרות פורייה ופונקציות סטטיסטיות.
– כלי אנליזה מתקדם שנקרא : Tracer Analyzer and Collector   ועליו ארחיב את הדיבור בהמשך .
– כמו כן יש לנו  benchmark  מתקדם לבדיקות ביצועים של אפליקציות מקביליות שמשתמשות בפרוטוקול ה-MPI , וגם אותו אנו מספקים ללקוח ( כולל קוד מקור ) כדי שיוכל לבדוק ביצועים בצורה אובייקטיבית על המערכת שלו  .

את כל הכלים הללו ארזנו לחבילה אחת שנקראת Intel Cluster Toolkit Compiler Edition  והיא תומכת גם ב- Windows  וגם ב- Linux  . 

לקוח או ארגון שבוחר להקים ולהשתמש באשכול חישוב עומד בפני הרבה החלטות מורכבות אנו אילו ספקים לעבוד: ממי לקנות את השרתים , ממי לקנות את תשתית התקשורת לאשכול, ממי לקנות את תוכנת ההפעלה לאשכול המחשוב – ולקוות שבסוף כל החלקים יעבדו ביחד  אינטל יצאה בתוכנית ליצירת סטנדרטים או ארכיטקטורה עבור אשכולות מחשוב מבוססי Linux  שנקראת
    Cluster Ready  ( ICR)  Intel .  מטרת התוכנית להגדיר מבחינת מבנה פונקציונאלי  את אבני הבניין שמהם  מורכב אשכול מחשוב – ולדאוג שאבני בניין אלו יעבדו בצורה חלקה גם אם הם מיוצרים ע”י יצרנים שונים. יצרןOEM)  ) שרוצה להשתתף בתוכנית צריך  שמוצריו יעברו בדיקות תאימות ( Interoperability )  בעזרת כלים והגדרות שאינטל מספקת –  מוצרים שעברו את הבדיקות נמכרים עם הלוגו של ICR וכך מבטיחים תאימות מלאה לשאר חלקי המערכת. כיום משתתפים בתוכנית כ 150 יצרני חומרה, תוכנה ומערכות בינהם Dell , SGI  ועוד  .

אילו כלי פיתוח מיוחדים נדרשים ממפתחי תוכנות לאשכולות  מחשוב  ?
וורנר: פיתוח אפליקציות לאשכולות חישוב דורש התייחסות מיוחדת ל- “מיקבול” התהליכים בין הצמתים והתקשורת בניהם. לצורך כך נדרשים כלי פיתוח מתקדמים  שיעקבו אחר התהליכים המקבילים  בזמן אמת , ויספקו מידע לצורך גילוי שגיאות ושיפור ביצועים, אתן שתי  דוגמאות :
 –  ספריית ה-MPI  מכילה אפליקציית Auto-Tune   לשלב ה- Debug   , שמנטרת סטטיסטית בזמן אמת את התקשורת בין הצמתים המחוברים בתקשורת מהירה ,  ומקנפגת פרמטרי אתחול  בתוכנה כך שהביצועים ישופרו ( כגון גודל ה- Packets  ) .
 – בנוסף מכילה ספריית ה MPI  אפליקציה שנקראת MPI Correctness Checker  שעוקבת אחרי טרנזקציות שליחת מידע דרך MPI ובודקת שהסתיימו כשורה. אחת התכונות המיוחדות היא האפשרות לעקוב ברמת פונקציות אחר תקשורת ה- MPI ולגלות תקלות שנגרמות משגיאות תוכנה כגון דריסות זיכרון או  אי שחרור חוצצים ( buffers ) שהתפנו לשימוש חוזר. 
. כלי נוסף הוא ה- Trace Analyzer and Collector  שאוסף נתונים עם חתימת זמן ברזולוציה גבוהה בכל הצמתים במקביל , מאחסן אותם בבסיס נתונים ומאפשר ב- off-line  לבצע ניתוח ביצועים.  בעזרתו ניתן לעקוב ולנתח אירועים באפליקציות מקביליות מבוססות MPI .
בנוסף ,  ה- Analyzer   מאפשר לגלות hotspots במסלולי זרימת המידע , זיהוי צווארי בקבוק  במערכת אם בגלל עומס חישובי או  בגלל בעיות תקשורת.ה יתרון של כלי זה הוא בעצם התקורה  ( overhead )  הנמוכה  שהוא מוסיף לאפליקציה עצמה מבחינת עומס החישוב ובכך לא משפיע על התנהגות המערכת שאותה הוא מנטר. דוגמא לכך אפשר לראות בציור 2

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

חשוב להדגיש  שכלי תוכנה אלה ישימים החל ממעבדים מרובי ליבות יחידים ( כמו במחשב אישי) ועד לאשכולות חישוב הגדולים ביותר. אינטל פיתחה את ה- Parallel Visual Studio   כסביבת פיתוח לעיבוד מקבילי לWindows

רלף : ככל שמספר הליבות בכל מעבד עולה – נדרשים כלים יותר חזקים ומתוחכמים שיתמכו בארכיטקטורות  אלו. כדי לחזק את התמיכה בתכנות על מעבדים מרובי ליבת  אינטל רכשה לאחרונה 2 חברות בתחום החישוב המקבילי :את  CilkArt  שפיתחה טכנולוגיה לתכנות מקבילי ב- C++    ואת Rapidmind  שפיתחה כלים להאצת עיבוד מקבילי על פלטפורמות מבוססות x86  . טכנולוגיות אלו מוטמעות בכלי הפיתוח של אינטל שיאפשרו לפתח אפליקציות מקביליות על מעבדים מרובי ליבות   .

וורנר: אין ספק שמגמת ריבוי הליבות  וריבוי מחשבים במערכות ( כגון אשכולות מחשוב) תלך ותתעצם  והתכנות מקבילי יתפוס מקום יותר מרכזי 
ניתן למצוא יותר מידע ב:  http://software.intel.com/en-us/intel-cluster-toolkit-compiler/ 

  
ציור 1 – מבנה אופייני לאשכול חישוב
 
 
ציור 2 – Trace Analyzer and Collector   העברות מידע בין תהליכי MPI

 

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