Singularity (תוכנה)

Singularity היא תוכנה חוצה פלטפורמות מחשוב, המבוססת קוד פתוח ומאפשרת וירטואליזציה וכמיסת קוד (Software container) ברמת מערכת ההפעלה.

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

השימוש בקוד ארוז מבוסס Singularity<ref></ref>מאפשר למפתחי תוכנה ואלגוריתמים לנייד קוד בצורה פשוטה מפלטפורמה אחת לאחרת בשקיפות ובקלות ובאופן כזה לנצל בקלות משאבי מחשוב רבים ומגוונים לטובת פתרון בעיות שמצריכות משאבים רבים. פתרון זה מאפשר שסביבות שלמות ניתנות להעתקה ולביצוע בפלטפורמות אחרות.

== היסטוריה ==
Singularity החלה כפרויקט בקוד פתוח בשנת 2015, כאשר צוות חוקרים במעבדה הלאומית של לורנס ברקלי, בראשות גרגורי קורצ'ר, פיתחו ושחררו את הגרסה הראשונית<ref></ref> תחת BSD License .

בסוף 2016, מפתחים רבים ממתקני מחקר שונים איחדו כוחות עם הצוות במעבדה הלאומית של לורנס ברקלי כדי לקדם את פיתוח פתרון ה-singularity<ref></ref>.

Singularity משכה במהירות את תשומת הלב של מוסדות מדעיים הצורכות כח מחשוב רב ברחבי העולם:
* מרכז המחשוב לחקר המחקר של אוניברסיטת סטנפורד פרסם את פתרון ה- Singularity על XStream ו-Sherlock<ref></ref>.
*מכוני הבריאות הלאומיים התקינו את Singularity על Biowulf <ref></ref>לטובת ה- Linux cluster<ref></ref>.
* אתרים שונים של ארגון המידע הפתוח כולל Fermilab החלו לאמץ את Singularity. עד אפריל 2017, Singularity נפרסה על 60% מרשת המדע פתוח.

במשך שנתיים ברציפות, בשנים 2016 ו-2017, הוכרה Singularity על ידי עורכי [https://www.hpcwire.com/ HPCwire] כ"אחת מחמש טכנולוגיות חדשות"<ref></ref>. בשנת 2017 Singularity זכתה גם במקום הראשון בקטגוריה: הכלי הטוב ביותר לתכנות HPC או טכנולוגיה<ref></ref> ″

נכון לשנת 2018, על סמך הנתונים שהוזנו במרשם ציבורי, מעריכים כי בסיס המשתמשים ביחידניות גדול מ־25,000 התקנות וכולל משתמשים במוסדות אקדמיים כמו אוניברסיטת אוהיו ואוניברסיטת מישיגן, כמו גם מרכזי HPC המובילים כמו מרכז המחשוב המתקדם בטקסס, מרכז מחשבי העל של סן דייגו ומעבדה לאומית של אוקרידג'.

== יכולות ==
השימוש ב-Singularity מאפשר תמיכה מלאה ומובנית בתשתיות תקשורת מהירות וממשקים מורכבים תחת סטנדרטיזציה בעולם המחשוב עתיר הביצועים כדוגמת InfiniBand של חברת מלנוקס כמו גם תשתיות תקשורת מהירות אחרות כגון Omni Path Architecture) OPA) של אינטל.

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

בנוסף, Singularity תומך באופן מלא בספריות תוכנה לטובת תקשורת מקבילית כדוגמת OpenMPI הן ברמת תקשורת פנימית בתוך הקוד העטוף והן בין חבילות תוכנה עטופות (Containerized).

כל היכולות המוזכרות לעיל הופכות את Singularity לתשתית פופולרית מאוד בתרחישים שבהם נדרשים חישובים המצריכים תקשורת מהירה ורחבת פס כדוגמת תהליכי אימון, למידה עמוקה והרצת חקר ביצועים למול אתגרי מחקר משמעותיים<ref></ref>.

== אינטגרציה ==
פתרון מבוסס Singularity הוא אינטגרטיבי למערכות ניהול משאבים ותזמון עבודות במחשוב עתיר ביצועים (High Performance Computing Schedulers) והוא מאפשר השתלבות פשוטה שאינה מצריכה התאמות מרחיקות לכת במערכים הקיימים וזאת בניגוד לשימוש בתשתית כדוגמת Docker שמצריכה התקנות ושינויים במערך ההרשאות בכלל מערכי העיבוד המיועדים לטובת תהליכי החישוב.

פתרון Singularity משתלב היטב עם המערכות הפופולריות הבאות:
* HTCondor<ref></ref>
* (Oracle Grid Engine (SGE
* SLURM - תוכנה לינוקסית קטנה לניהול משאבים.
* TORQUE - תוכנה לניהול משאבים במערכות חישוב מבוזרות.

== קישורים חיצוניים ==

* 

* [https://www.nextplatform.com/2018/03/19/singularity-containers-for-hpc-deep-learning/ singularity-containers-for-hpc-deep-learning]
* [https://www.researchgate.net/publication/317209187_Singularity_Scientific_containers_for_mobility_of_compute מאמר אקדמי בנושא Singularity Containers for mobility computers]

== הערות שוליים ==

קטגוריה:תוכנה חופשית
קטגוריה:מערכת הפעלה
קטגוריה:וירטואליזציה
קטגוריה:לינוקס