alt

Как установить modules?
Как организовать структуру каталогов?
Как управлять доступом к ПО?

MODULE SETTINGS

$ yum install environment-modules
$ mcedit /etc/modulefailes/cuda/v10.1
  #%Module1.0
  proc ModulesHelp { } {
    global version
      puts stderr "Modulefile for cuda v10.1"
      }
      set version v10.1
      module-whatis "Modulefile for cuda v10.1"
      # Our environment
      setenv MAINDIR /nfs/software/cuda/v10.1
      prepend-path PATH $env(MAINDIR)/bin
      prepend-path C_INCLUDE_PATH $env(MAINDIR)/include
      prepend-path CPLUS_INCLUDE_PATH $env(MAINDIR)/include
      prepend-path LIBRARY_PATH $env(MAINDIR)/lib64/stubs
      prepend-path LIBRARY_PATH $env(MAINDIR)/lib64
      prepend-path LD_LIBRARY_PATH $env(MAINDIR)/lib64/stubs
      prepend-path LD_LIBRARY_PATH $env(MAINDIR)/lib64
$ mcedit /etc/modulefailes/cuda/v9.2

1. Установим пакет для управления модулями
2-19. Создадим несколько модуль-файлов

CHECK SCRIPT

Вероятность допустить ошибку, при подготовке модуля, довольно велика. Поэтому я провожу проверку всех путей, указанных в модуль-файле. Чтобы не проверять каждый путь вручную я подготовил скрипт. Если 0, то путь корректный.

$ cat check-modulefiles
  #!/bin/sh
  ModulePath=$1
  MainDir=$(cat $ModulePath | grep "setenv MAINDIR" | cut -f7 -d " ")
  ListOfPaths=$(cat $ModulePath | grep path | cut -f7 -d " ")
  #Replace MainDir setenv in modulefile
  ListOfPaths=$(echo $ListOfPaths | sed "s@\$env(MAINDIR)@$MainDir@g")
  for u in $ListOfPaths; do
    ls -la $u 1> /dev/null 2> /dev/null;
    printf "%60s %4d\n" $u $?;
  done
$ chmod +x check-modulefiles
$ ./check-modulefiles /etc/modulefiles/cuda/v10.1
  /nfs/software/cuda/v10.1/bin            0
  /nfs/software/cuda/v10.1/include        0
  /nfs/software/cuda/v10.1/include        0
  /nfs/software/cuda/v10.1/lib64/stubs    0
  /nfs/software/cuda/v10.1/lib64          0
  /nfs/software/cuda/v10.1/lib64/stubs    0
  /nfs/software/cuda/v10.1/lib64          0

MODULE CONTROL

$ module avail
$ module add cuda/v10.1
$ nvcc –version
  Cuda compilation tools, release 10.1, V10.1.168
$ module switch cuda/v10.1 cuda/v9.2
$ nvcc –version
  Cuda compilation tools, release 9.2, V9.2.88
$ module list
$ module rm cuda/v9.2

1. Посмотрим список доступных для подключения модулей
2. Подключим модуль
3-4. Проверим версию
5. Поменяем модуль
6-7. Проверим версию
8. Посмотрим список подключенных модулей
9. Удалим модуль из списка подключенных