Module
1. Module 이란
클러스터에 설치된 공유 프로그램을 사용하기 위해서
사전에 정의된 환경변수(PATH)를 불러오거나(load) 전환(swap) 할 수 있는 도구 입니다.
https://modules.readthedocs.io/en/latest/
클러스터 에서 사용할 수 있는 디스크 용량이 한정적 이기 때문에
사용 가능한 공유 프로그램이 있다면 활용하는 것이 좋습니다.
또한 anaconda 같은 도구에서 제공되지 않는 프로그램을
관리자에게 설치 요청하여 사용할 수 있습니다.
2. 현재 사용중인 용량과 가능한 용량 확인
# anaconda 설치 용량 확인.
du -h -d 0 ~/anaconda3/
# home directory 전체 용량 확인.
df -hT /home
# 할당된(quota) 용량 확인
ssh MASTER '/usr/sbin/xfs_quota -xc "quota -h $USER"'
3. module 명령어
module
# module list == ml
# module avail == ml av
# 현재 load 되어 있는 module 목록
ml list
# 사용 가능한 module 목록
ml av
# 일부 module 내리기
ml unload cuda
ml list
# 모든 module 내리기(all unload)
ml purge
ml list
# module 올리기 (load)
ml load ohpc # ohpc == default load module name
ml # ml == ml list or module list
# 일부 moudel 바꾸기 (swap)
ml
ml av
ml swap cuda/11.2 cuda/9.0
ml
# module 의 상세 정보 출력
ml show ohpc
ml show cuda/9.0
4. module 사용 예 (컴파일러 버젼 변경)
1) cuda / nvcc
ml purge
ml
which nvcc ; echo ; nvcc -V
ml av | grep cuda
ml load cuda/9.0
which nvcc ; echo ; nvcc -V
ml swap cuda/9.0 cuda/11.2
which nvcc ; echo ; nvcc -V
2) gnu / gcc
ml purge
ml
which gcc ; echo ; gcc --version
ml av | grep gnu
ml load gnu/5.4.0
which gcc ; echo ; gcc --version
ml swap gnu/5.4.0 gnu7
ml
which gcc ; echo ; gcc --version
3) 환경변수(PATH, env) 의 변화 확인
ml purge
echo $PATH
ml load gnu/5.4.0
echo $PATH
env | grep PATH
5. bash 스크립트 (Script) 파일로 만들어서 실행
cat << EOF > ~/module_test.sh
module purge
module load cuda/9.0
echo
which nvcc ; echo
nvcc --version ; echo
EOF
cat ~/module_test.sh
bash ~/module_test.sh
## 스크립트에서 실행된 결과와 비교.
which nvcc ; echo
nvcc --version ; echo
6. 로그인시 module 기본 환경 구성 (bashrc / rc = Run command)
~/.bashrc 파일에 module swap cuda/9.0 cuda/11.2 를 추가 하면 로그인 할때마다 해당 환경이 기본으로 load 됩니다.
## 홑화살괄호 를 반드시 2개 '>>' 넣어야 합니다. 1개만 넣으면 파일에 있던 기존 내용이 삭제되고 덮어씌워 집니다.
cat << EOF >> ~/.bashrc
# User Custom Module
module swap cuda/11.2 cuda/9.0
module unload gnu/5.4.0
EOF
cat ~/.bashrc
exit
# Re-login
module list
which nvcc