שליחת ריצות באמצעות SLURM
מערכת SLURM (ראשי תיבות Simple Linux Utility for Resource Management) הינה מערכת קוד פתוח (Open-Source), עמידה מאוד בפני תקלות, ומדרגית ביותר, המאפשרת ניהול של אשכולות מחשוב (Clusters) מבוססי לינוקס כך שניתן לתזמן שליחת משימות (Jobs) ולנהל אותן.
ל-SLURM שלושה פונקציות מרכזיות. ראשית, המערכת מקצה למשתמש גישה למשאבי מחשוב באופן אקסקלוסי או לא-אקסקלוסבי למשך זמן מסוים, כך שניתן יהיה לבצע עליהם חישוב. שנית, המערכת מספקת מסגרת להרצה ממש של משימות, כולל שליחתם למחשבים השונים תוך כדי ניטור מתמיד שלהם (בדרך כלל מדובר בריצות מקביליות). לבסוף, המערכת מייצרת סדר עבור מספר רב של משתמשים על ידי ניהול תור ריצות לפי סדר (בדרך כלל סדר כניסה).
להלן נציג את הפקודות השונות ואת אופי השימוש בהם בגריד הירוק על מנת לשגר ריצה:
1) sinfo - פקודה זו מאפשרת לקבל מידע על מצב קודקודי החישוב ברגע נתון.
קודקודי החישוב יחולקו לקבוצות לפי מצבם, שמם או ה-partition שלהם. בדוגמה הנל ניתן לראות לדוגמה כי רק 4 קודקודי חישוב פעילים (node001-004) וכי השאר (node000, node005-014) אינם פעילים. כמו כן ניתן לראות כי שם המחיצה הדיפולטיבית (סימון בכוכבית) היא normal.
2) squeue - פקודה זו מאפשרת לראות את מצב תור הריצה של SLURM.
כל הרצה של עבודה (job) דרך slurm תתווסף לתור. לכל job יוצג מספרה הסידורי, שם המחיצה, שם התכנה שרצה, שם המשתמש שהריצה את העבודה, הזמן (בדקות) שהעבודה רצה, מספר קודקודי החישוב שהוקצו למשימה ושמותיהם.
כמו-כן, יצוין מצבה של כל עבודה כאשר:
R פירושו Running - העבודה רצה.
CG - העבודה בתהליכי כיבוי.
PD - המשימה ממתינה. סיבת ההמתנה תצוין בסוגריים בסוף השורה.
3) srun - מאפשרת להריץ עבודה על כלל קודקודי החישוב שהוקצו. בדוגמה הנל ניתן לראות כי ביקשנו להריץ את הפקודה hostname אשר מדפיסה את שם קודקוד החישוב (N גדולה) על פני 3 שרתים (בדוגמה node001-003).
להבדיל מהפעולה לעיל בדוגמה הנ״ל ניתן להריץ את הפקודה על פני 4 תהליכים שונים, כאשר בפועל כולם ישוגרו מאותו המחשב (בדוגמה node001).
4) sbatch - מאפשרת להריץ קובץ סקריפט (בעל סיומת sh) על מנת שיבוצע בצורה מקבילית. בדוגמה הנ״ל הסקריפט my.script מדפיס את שם קודקוד החישוב וכן את תוצאות הריצה של הרצה הפקודה numactl המראה את מאפייני קודקוד החישוב.
5) scancel - מאפשרת ביטול של job שנמצא בתור הריצה של slurm באמצעות הפקודה:
scancel {job_id}
בדוגמה הנ״ל הסקריפט testtime מבצע פקודת השהייה למשך 100 שניות. לאחר שהרצנו את הסקריפט באמצעות sbatch וראינו כי הוא רץ באמצעות בדיקת squeue ומספר העבודה הינו 360, ביצענו ביטול של ההרצה באמצעות scancel 360, ולאחר מכן בדיקת squeue נוספת אכן מראה כי הריצה סיימה.