מודולים

*צבר מחקר בלבד כרגע

הקדמה

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

שימוש

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

בדוגמאות הנ"ל נניח שמדובר בסטודנט העובד עם GPU ומעוניין בטעינת סביבות עבודה שונות של cuda.


$ module load cuda
$ module list
Currently Loaded Modulefiles:
1) cuda/9.0-7.0.5(default)

What was set?
$ module show cuda

——————————————————————-

setenv CUDA_HOME /home/EnvModules/packages/cuda/9.0-7.0.5
setenv CUDA_PATH /home/EnvModules/packages/cuda/9.0-7.0.5
append-path PATH /home/EnvModules/packages/cuda/9.0-7.0.5/bin
append-path CPATH /home/EnvModules/packages/cuda/9.0-7.0.5/include
append-path LD_LIBRARY_PATH /home/EnvModules/packages/cuda/9.0-7.0.5/lib64
append-path LIBRARY_PATH /home/EnvModules/packages/cuda/9.0-7.0.5/lib64
append-path MANPATH /home/EnvModules/packages/cuda/9.0-7.0.5/doc/man
conflict cuda (see at the end of this document)
——————————————————————-

נסכם במילים מה שראינו פה. השלב הראשון היה טעינת סביבת cuda. המשתמש לא ציין סביבה ספציפית ולכן נטענה הברירת מחדל (cuda/9.0-7.0.5(default)).
אח"כ הרצנו פקודה שמראה לנו מה בעצם נעשה כמו כן נשים לב שזה לא רק cuda אלא יש גם קישור (פנימי) לlibcudnn גירסת 7.0.5.

איזו מודולים קיימים?


$ module avail
The short form the command is:
$ module av
Available Modules can be also displayed in different modes, such as
• each Module per one line
$ module -t avail
• long
$ module -l avail

- Package/Alias -----------------------.- Versions --------.- Last mod. -------
/home/EnvModules/modules:
bazel/0.18.0 2018/10/23 07:42:50
cuda/9.0-7.0.5 2018/10/22 15:13:23
cuda/9.0-7.1.1 2018/10/22 15:31:34
cuda/9.2-7.1.4 2018/10/23 07:26:24
cuda/9.2-7.2.1 2018/10/25 17:24:30
mkl/2017.2.174 2018/10/22 15:46:01
utils/gperf/3.0.4-2 2018/10/24 14:39:40              2018/07/25 12:25:55

התנגשויות

נשים לב לשורה אחרונה בפלט שבו טענו את סביבת העבודה של קודה הנ"ל.

conflict cuda

שורה זו אומרת שאי אפשר לטעון שני סביבות של קודה בו זמנית. ואם אנסה בכל זאת:


ERROR: WARNING: cuda/9.0-7.1.1 cannot be loaded due to a conflict.
HINT: Might try "module unload cuda/9.0-7.1.1" first.

אז אפשר כמובן לקרוא את השגיאה ולעשות כפי שנאמר:


$module unload cuda
$module load cuda/9.0-7.1.1
OR
$module switch cuda/9.0-7.1.1
$module list
Currently Loaded Modulefiles:
1) cuda/9.0-7.1.1

ניקוי סביבה

אופציה נוספת הקיימת היא לנקות את כל סביבת העבודה:

$module purge
OR
$module clear

כאשר האפ’ השנייה שואלת שוב ליתר בטחון האם זאת הכוונה והאפשר’ הראשונה לא(כלומר מתאים יותר לסקריפטים אוטומטים)

טעינה אוטומטית

על מנת לטעון אוטומטית מודולים קבועים יש להוסיף את הפקודות הרלוונטית לסקריפט של ה batch או ל .bashrc ואז כמובן לעשות לו source בסקריפט שמריצים

 

איך משתמשים?

 

יש להוסיף את השורה הבא לקובץ .bashrc בספרית הבית שלכם:

source /etc/profile.d/modules.sh