การใช้งาน local module ใน TARA Cluster

TARA Cluster มีรายการของซอฟต์แวร์ที่ติดตั้งพร้อมใช้งานอยู่ ซึ่งสามารถตรวจสอบได้จากคำสั่ง module avail โดยเรียก module เหล่านั้น ว่า global module แต่ในกรณีที่ไม่พบ module ที่ต้องการอยู่ในรายการดังกล่าว ผู้ใช้งานสามารถติดตั้งซอฟต์แวร์ได้เอง (local module) โดยมีขั้นตอนการติดตั้งและเรียกใช้งาน local module ดังนี้

ตรวจสอบความพร้อมก่อนเริ่มใช้งาน local module

หลังจาก login เข้าใช้งาน TARA-frontend-node แล้ว ผู้ใช้งานสามารถตรวจสอบความพร้อมก่อนเริ่มใช้งาน local module ได้จากไฟล์ .bashrc

[username@tara-frontend-1 ~]$ cat .bashrc 

# .bashrc

...

# Easybuild

export EASYBUILD_PREFIX=$HOME/.local/easybuild

export EASYBUILD_MODULES_TOOL=Lmod

export LOCAL_MODULES=${EASYBUILD_PREFIX}/modules/all

 

function mu(){

   module use $LOCAL_MODULES

   module load EasyBuild

   echo "done."

}

[username@tara-frontend-1 ~]$ cat .bashrc 

# .bashrc

...

# Easybuild

export EASYBUILD_PREFIX=$HOME/.local/easybuild

export EASYBUILD_MODULES_TOOL=Lmod

export LOCAL_MODULES=${EASYBUILD_PREFIX}/modules/all

 

function mu(){

   module use $LOCAL_MODULES

   module load EasyBuild

   echo "done."

}

จากตัวอย่าง เริ่มจากบรรทัด # Easybuild จะมีการ export EASYBUILD_PREFIX, EASYBUILD_MODULES_TOOL และ LOCAL_MODULES พร้อมกับ function mu() สำหรับเปิดใช้งาน local module หากพบว่ารายละเอียดในไฟล์ .bashrc มีข้อมูลดังกล่าวครบถ้วน แสดงว่าผู้ใช้งานพร้อมสำหรับการใช้งาน local module แล้ว

เปิดใช้งาน local module

ทุกครั้งที่ผู้ใช้งาน login เข้า TARA-frontend-node หากต้องการติดตั้งหรือใช้งาน local module จะต้องทำการเปิดใช้งาน local module ก่อนทุกครั้ง

[username@tara-frontend-1 ~]$ mu

done.

[username@tara-frontend-1 ~]$ ml

 

Currently Loaded Modules:

  1. EasyBuild/4.4.1

 

[username@tara-frontend-1 ~]$ 

[username@tara-frontend-1 ~]$ mu

done.

[username@tara-frontend-1 ~]$ ml

 

Currently Loaded Modules:

  1. EasyBuild/4.4.1

 

[username@tara-frontend-1 ~]$ 

จากตัวอย่าง

  • เรียกคำสั่ง mu เพื่อเปิดใช้งาน local module

  • ตรวจสอบ module ที่มีการเรียกใช้งาน จะพบว่าได้มีการเรียกใช้งาน module EasyBuild เพื่อใช้ในการค้นหาและติดตั้ง local module ไว้เรียบร้อยแล้ว

ค้นหาซอฟต์แวร์ที่ต้องการผ่าน EasyBuild

สามารถค้นหารายการของซอฟต์แวร์ที่สามารถติดตั้งผ่านทาง EasyBuild ได้ ด้วยคำสั่ง eb -S

[username@tara-frontend-1 ~]$ eb -S htop

== found valid index for /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs, so using it...

CFGS1=/tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs/h/htop

  • $CFGS1/htop-2.0.0.eb

  • $CFGS1/htop-2.0.1.eb

[username@tara-frontend-1 ~]$ 

[username@tara-frontend-1 ~]$ eb -S htop

== found valid index for /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs, so using it...

CFGS1=/tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs/h/htop

  • $CFGS1/htop-2.0.0.eb

  • $CFGS1/htop-2.0.1.eb

[username@tara-frontend-1 ~]$ 

จากตัวอย่าง

  • ค้นหารายการของซอฟต์แวร์ที่สามารถติดตั้งผ่านทาง EasyBuild ได้จากคำสั่ง eb -S โดยจะแสดงรายการของ easyconfig file (.eb) ที่พบ โดย easyconfig คือ ชุดการตั้งค่าที่ EasyBuild ใช้ในการติดตั้ง

  • ผลลัพธ์ที่ได้จากการใช้คำสั่ง eb -S htop ซึ่งเป็นการค้นหา easyconfig file สำหรับติดตั้งโปรแกรม htop จะพบว่ามี easyconfig จำนวน 2 รายการ คือ htop-2.0.0.eb และ htop-2.0.1.eb

ทดสอบก่อนติดตั้งซอฟต์แวร์ที่ต้องการผ่าน EasyBuild

สามารถตรวจสอบก่อนทำงานของซอฟต์แวร์ EasyBuild ก่อนดำเนินการติดตั้งจริงได้ โดยใส่ option -D หรือ --dry-run ระหว่างเรียกใช้งานคำสั่ง eb

ทดสอบการทำงานของคำสั่ง eb ก่อนติดตั้ง​จริง ได้ด้วยคำสั่ง eb htop-2.0.1.eb -Dr เพื่อตรวจสอบปัญหาที่จะพบระหว่างการติดตั้ง และตรวจสอบรายการซอฟต์แวร์ที่จำเป็นต้องติดตั้งเพื่อใช้งานร่วมกับซอฟต์แวร์ดังกล่าว

[username@tara-frontend-1 ~]$ eb htop-2.0.1.eb -Dr

== Temporary log file in case of crash /tmp/eb-RMDgBG/easybuild-j5o1FG.log

== found valid index for /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs, so using it...

== found valid index for /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs, so using it...

Dry run: printing build status of easyconfigs and dependencies

CFGS=/tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs

  • [x] $CFGS/n/ncurses/ncurses-6.0.eb (module: ncurses/6.0)

  • [ ] $CFGS/h/htop/htop-2.0.1.eb (module: htop/2.0.1)

== Temporary log file(s) /tmp/eb-RMDgBG/easybuild-j5o1FG.log* have been removed.

== Temporary directory /tmp/eb-RMDgBG has been removed.

[username@tara-frontend-1 ~]$ 

[username@tara-frontend-1 ~]$ eb htop-2.0.1.eb -Dr

== Temporary log file in case of crash /tmp/eb-RMDgBG/easybuild-j5o1FG.log

== found valid index for /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs, so using it...

== found valid index for /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs, so using it...

Dry run: printing build status of easyconfigs and dependencies

CFGS=/tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs

  • [x] $CFGS/n/ncurses/ncurses-6.0.eb (module: ncurses/6.0)

  • [ ] $CFGS/h/htop/htop-2.0.1.eb (module: htop/2.0.1)

== Temporary log file(s) /tmp/eb-RMDgBG/easybuild-j5o1FG.log* have been removed.

== Temporary directory /tmp/eb-RMDgBG has been removed.

[username@tara-frontend-1 ~]$ 

จากตัวอย่าง

  • ตรวจสอบผลลัพธ์จากการใช้คำสั่ง eb htop-2.0.1.eb -Dr จะพบว่าการติดตั้งซอฟต์แวร์ htop นั้น ต้องการติดตั้งซอฟต์แวร์ ncurse-6.0.eb ก่อน โดย [x] จะแสดงว่าซอฟต์แวร์ ncurse-6.0 นั้น ได้ถูกติดตั้งอยู่ในระบบแล้ว

  • ไม่พบข้อความ error ใด ๆ ระหว่างการทดสอบติดตั้ง

ติดตั้งซอฟต์แวร์ที่ต้องการผ่าน EasyBuild

ทำการติดตั้งซอฟต์แวร์ที่ต้องการด้วยคำสั่ง eb htop-2.0.1.eb -r โดยระบบจะดำเนินการติดตั้งซอฟต์แวร์ที่ต้องการและซอฟต์แวร์อื่น ๆ ที่เกี่ยวข้อง

[username@tara-frontend-1 ~]$ eb htop-2.0.1.eb -r

== Temporary log file in case of crash /tmp/eb-ZlIo7c/easybuild-450StN.log

== found valid index for /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs, so using it...

== resolving dependencies ...

== processing EasyBuild easyconfig /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs/h/htop/htop-2.0.0.eb

== building and installing htop/2.0.0...

...

== COMPLETED: Installation ended successfully (took 16 secs)

== Results of the build can be found in the log file(s) /tarafs/data/home/username/.local/easybuild/software/htop/2.0.0/easybuild/easybuild-htop-2.0.0-20211223.155112.log

== Build succeeded for 1 out of 1

== Temporary log file(s) /tmp/eb-ZlIo7c/easybuild-450StN.log* have been removed.

== Temporary directory /tmp/eb-ZlIo7c has been removed.

[username@tara-frontend-1 ~]$ 

[username@tara-frontend-1 ~]$ eb htop-2.0.1.eb -r

== Temporary log file in case of crash /tmp/eb-ZlIo7c/easybuild-450StN.log

== found valid index for /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs, so using it...

== resolving dependencies ...

== processing EasyBuild easyconfig /tarafs/utils/modules/software/EasyBuild/4.4.1/easybuild/easyconfigs/h/htop/htop-2.0.0.eb

== building and installing htop/2.0.0...

...

== COMPLETED: Installation ended successfully (took 16 secs)

== Results of the build can be found in the log file(s) /tarafs/data/home/username/.local/easybuild/software/htop/2.0.0/easybuild/easybuild-htop-2.0.0-20211223.155112.log

== Build succeeded for 1 out of 1

== Temporary log file(s) /tmp/eb-ZlIo7c/easybuild-450StN.log* have been removed.

== Temporary directory /tmp/eb-ZlIo7c has been removed.

[username@tara-frontend-1 ~]$ 

ระบบจะดำเนินการติดตั้งตามที่กำหนดไว้ในไฟล์ easyconfig พร้อมทั้งแสดงผลลัพธ์ระหว่างการติดตั้ง

ตรวจสอบรายการซอฟต์แวร์ที่ติดตั้งผ่าน EasyBuild

สามารถตรวจสอบซอฟต์แวร์ที่ติดตั้งแบบ local module ได้จากคำสั่ง module avail และเรียกใช้งานได้จากคำสั่ง module load ดังรูป

[username@tara-frontend-1 ~]$ module avail


-------------- /tarafs/data/home/username/.local/easybuild/modules/all --------------

   git/2.32.0-GCCcore-10.3.0-nodocs    htop/2.0.0

 

-------------------------- /tarafs/utils/modules/modules/all ------------------------

   ANSYS/2020.1                               RAxML/8.2.12-intel-2019b-hybrid-avx2

   ARAGORN/1.2.38-foss-2019b                  Racon/1.4.13-GCCcore-8.3.0

   AUGUSTUS/3.3.3-foss-2019b                  Ray/2.3.1-iimpi-2019b

...

 

Use "module spider" to find all possible modules.

Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".

 

[username@tara-frontend-1 ~]$ module load htop

[username@tara-frontend-1 ~]$ module list

 

Currently Loaded Modules:

  1. EasyBuild/4.4.1   2) ncurses/6.0 (H)   3) htop/2.0.0

 

  Where:

   H:  Hidden Module

 

[username@tara-frontend-1 ~]$ 

[username@tara-frontend-1 ~]$ module avail


-------------- /tarafs/data/home/username/.local/easybuild/modules/all --------------

   git/2.32.0-GCCcore-10.3.0-nodocs    htop/2.0.0

 

-------------------------- /tarafs/utils/modules/modules/all ------------------------

   ANSYS/2020.1                               RAxML/8.2.12-intel-2019b-hybrid-avx2

   ARAGORN/1.2.38-foss-2019b                  Racon/1.4.13-GCCcore-8.3.0

   AUGUSTUS/3.3.3-foss-2019b                  Ray/2.3.1-iimpi-2019b

...

 

Use "module spider" to find all possible modules.

Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".

 

[username@tara-frontend-1 ~]$ module load htop

[username@tara-frontend-1 ~]$ module list

 

Currently Loaded Modules:

  1. EasyBuild/4.4.1   2) ncurses/6.0 (H)   3) htop/2.0.0

 

  Where:

   H:  Hidden Module

 

[username@tara-frontend-1 ~]$