드레스룸 시스템행거 인테리어

반응형

linux environment modules(환경 모듈) 사용하기

 

 

리눅스를 사용하다 보면 예기치 않게 어떤 사용자는 cuda-10.0을 사용하게 될 것이고 어떤 사용자는 cuda-10.1을 사용하게 될 것이다. 물론 사용자 home 폴더의 .bashrc에서 지역변수를 사용하여 각각 다른 환경에서 사용할 수 있지만 cuda뿐만 아니라 cuda에 어떤 mpi를 사용하고 다른 compiler 등을 사용할 때는 구성하기가 약간 복잡해질 수가 있다. 그래서 오늘은 나도 이번에 배우게 된 environment-modules에서 대해 알아보도록 하겠다. 나는 사전작업을 위해 cuda10.0과 cuda10.1이 설치되어 있는 상태이다.

 

 

environment-modules install

 

(base) root@ckkim:~# apt-get install environment-modules
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libtcl8.6 tcl8.6
Suggested packages:
  tcl-tclreadline
The following NEW packages will be installed:
  environment-modules libtcl8.6 tcl8.6
0 upgraded, 3 newly installed, 0 to remove and 26 not upgraded.
Need to get 0 B/1,106 kB of archives.
After this operation, 4,652 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

..
..
(base) root@ckkim:~# logout
Connection to 192.168.15.159 closed.
                                                                       ✘
──────────────────────────────────────────────────────────────────────
[2020-09-08 17:23.03]  ~
[.LAPTOP-OJ2LO4LK] ➤ ssh root@192.168.15.159
root@192.168.15.159's password:
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-45-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

33 packages can be updated.
9 updates are security updates.

Your Hardware Enablement Stack (HWE) is supported until April 2023.
Last login: Tue Sep  8 17:21:54 2020 from 192.168.15.166
-bash: /usr/bin/tclsh: No such file or directory
-bash: export: _moduleraw: not a function
-bash: export: module: not a function

 

위와 같이 environment-modules를 설치 하고 logout후 다시 login을 하게 된다면 bash 쪽에 보기 좋지 않은 모습으로 나올 것이다. 그렇다면 tcl이란 패키지도 설치하면 된다.

 

(base) root@ckkim:~# apt-get install tcl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  tcl
0 upgraded, 1 newly installed, 0 to remove and 26 not upgraded.

 

위와 같이 tcl 패키지를 설치 하고 logout후에 다시 login을 하게 되면 정상적인 login 화면을 볼 수 있다.

 

 

environment modules - 설정 파일 

 

(base) root@ckkim:/usr/share/modules/modulefiles# ls
dot  module-git  module-info  modules  null  use.own
(base) root@ckkim:/usr/share/modules/modulefiles# mkdir cuda
(base) root@ckkim:/usr/share/modules/modulefiles# cp modules cuda/cuda-10.1
(base) root@ckkim:/usr/share/modules/modulefiles# vim cuda/cuda-10.1
#%Module1.0#####################################################################
##
## modules modulefile
##
proc ModulesHelp { } {
        global version prefix

        puts stderr "\tmodules - loads the modules software & application environment"
        puts stderr "\n\tThis adds $prefix/* to several of the"
        puts stderr "\tenvironment variables."
        puts stderr "\n\tVersion $version\n"
}

module-whatis   "loads the modules environment"

# for Tcl script use only
set     version         4.1.1
set     prefix          /usr/share/modules


setenv          MODULESHOME     $prefix
prepend-path    PATH            /usr/bin
prepend-path    MANPATH         /usr/share/man

# enable module versioning modulepath
#module use /usr/share/modules/versions

 

기본 설정 경로는 위와 같이 /usr/share/modules/modulesfiles이다. 저기서 우리가 환경변수를 설정하기 위해서는 기본 제공되어 있는 modules파일을 수정 후 사용해야 한다. 그래서 cuda를 예로 들기 위하여 cuda폴더를 만들고 modules파일을 cuda-10.1 파일로 이름 변경하여 복사하였다. 그 아래는 cuda-10.1 파일이다 원본(modues 파일).

 

 

modules 설정 파일 수정

 

#%Module1.0#####################################################################
##
## modules modulefile
##

module-whatis   "cuda-10.1"

# for Tcl script use only


prepend-path    PATH            /usr/local/cuda-10.1/bin
prepend-path    LD_LIBRARY_PATH /usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/extras/CUPTI/lib64

# enable module versioning modulepath
#module use /usr/share/modules/versions

 

위와 같이 본인에 환경에 맞는 경로로 설정 해 주면 된다. 이후 나는 cuda-10.1 파일을 복사 후 수정하여 cuda-10.0 파일도 동일하게 만들었다.  

 

 

modules 사용

 

(base) root@ckkim:/usr/share/modules/modulefiles/cuda# module avail
--------------------- /usr/share/modules/modulefiles -------------------------------
cuda/cuda-10.0  cuda/cuda-10.1  dot  module-git  module-info  modules  null  use.own
(base) root@ckkim:/usr/share/modules/modulefiles/cuda# module load cuda/cuda-10.0
(base) root@ckkim:/usr/share/modules/modulefiles/cuda# module list
Currently Loaded Modulefiles:
 1) cuda/cuda-10.0
(base) root@ckkim:/usr/share/modules/modulefiles/cuda# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
(base) root@ckkim:/usr/share/modules/modulefiles/cuda# module unload cuda/cuda-10.0
(base) root@ckkim:/usr/share/modules/modulefiles/cuda# module list
No Modulefiles Currently Loaded.
(base) root@ckkim:/usr/share/modules/modulefiles/cuda# module load cuda/cuda-10.1
(base) root@ckkim:/usr/share/modules/modulefiles/cuda# module list
Currently Loaded Modulefiles:
 1) cuda/cuda-10.1
(base) root@ckkim:/usr/share/modules/modulefiles/cuda# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Apr_24_19:10:27_PDT_2019
Cuda compilation tools, release 10.1, V10.1.168

 

위에 코드블록을 보고 자세히 이해하길 바라며, 

module avail은 현재 modules/modulefiles에 생성되어 있는 리스트를 보여주는 것이며, module load cuda/cuda-10.0을 통하여 cuda-10.0의 환경을 불러올 수 있다. 또한 module list는 현재 사용하고 있는 module환경을 보여준다. 마지막으로 module unload를 통해 사용하는 환경을 unload 시킬 수 있다. 위에 nvcc -V를 통해 cuda-10.0과 cuda-10.1 환경으로 변경되는 것을 확인할 수 있을 것이다.

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band