Académique Documents
Professionnel Documents
Culture Documents
Sumrio
1 Configurao e instalao do Lmod
1.1 Instalando lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Instalando o Lmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Configurando e testando o Lmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
3
3
2 Exemplos
2.1 Criando
2.2 Criando
2.3 Criando
2.4 Criando
4
4
6
7
8
um
um
um
um
mdulo
mdulo
mdulo
mdulo
para
para
para
para
a
a
a
o
lib openmpi
lib szip . . .
lib zlib . . .
hdf5 . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Lmod um sistema de mdulos baseado em lua que fornece uma maneira mais conveniente de alterar dinamicamente as variveis de ambiente de usurio atravs de modulefiles. Isto inclui a facilidade de adicionar
ou remover diretrios para variveis, tais como, PATH e LD_LIBRARY_PATH.
A instalao do Lmod requer a instalao dos pacotes lua, alm do luafilesystem e luaposix. Para facilitar a
instalao o pacote lua j com lfs e posix pode ser baixado jundo com o Lmod no site http://sourceforge.
net/projects/lmod/files/.
Para este tutorial foram baixados os pacotes Lmod-6.0.1.tar.bz2 e
lua-5.1.4.5.tar.gz.
1.1
Instalando lua
recomendado baixar os pacotes e deixar em uma pasta que contenha os fontes de tudo que ser instalado, no
caso deste tutorial estar dentro do /home em uma pasta chamada sw, ou ainda, /sw/.
Aps ter baixado os pacotes de instalao e copiado para /sw do lua basta descompactar o arquivo e
proceder como no listing 1 para instalao:
$
$
$
$
$
$
$
$
$
$
$
1.2
Instalando o Lmod
Com os pacotes lua, luafilesystem e luaposix no sistema o Lmod pode ser instalado sem maiores problemas.
Depois de ter baixado o Lmod basta prosseguir com os comandos do listing
$
$
$
$
1.3
Depois que Lmod instalado preciso configur-lo para que ele esteja disponvel quando o usurio loga no sistema. Para isto preciso criar links simblicos de alguns scripts dentro do diretrio /opt/apps/lmod/lmod/init/.
Para isto proceda como no listing 3.
$ ln -s / opt / apps / lmod / lmod / init / profile / etc / profile . d / modules . sh
$ ln -s / opt / apps / lmod / lmod / init / cshrc / etc / profile . d / modules . csh
Exemplos
Para validar e demonstrar as facilidades do Lmod sero mostrados alguns exemplos de uso para a biblioteca
do openmpi. Scripts mais elaborados e outras informaes podem ser obtidas no site da TACC.
De forma geral os passos para criar um mdulo que ser utilizado para compilar alguma aplicao ou mesmo
um mdulo de software so:
Baixar o cdigo fonte da lib ou binrio da aplicao.
Criar um diretrio de instalao com o nome da lib ou aplicao e um sub-diretrio com a verso dentro
de /opt/apps (e.g. /opt/apps/$(NOME)/
$(VERSO)).
Instalar ou copiar o arquivos da lib ou aplicao dentro do diretrio criado no item anterior.
Criar um diretrio dentro de /opt/apps/modulefiles/Core onde estar o script em lua responsvel por
carregar o mdulo nas variveis de ambiente do sistema. Este diretrio deve ter o nome da lib ou aplicao
instalada e o script em nome do arquivo que armazenar o script lua deve ter o nome correspondente a
verso do software instalado.
Para ficar mais claro alguns mdulos sero criados o que permitir a criao de diversos outros mdulos
para o sistema.
2.1
Openmpi uma biblioteca de Message Passing Interface, um padro de dados para comunicao paralela,
mantido por uma associao entre universidades, pesquisadores e parceiros industriais. Esta biblioteca permite construir aplicaes constitudas por um ou mais processos que se comunicam, em um ou mais computadores, por meio de envio de mensagens entre os processos.
Primeiro preciso baixar o cdigo fonte da biblioteca, criar um diretrio com a verso do openmpi no
diretrio /opt/apps/openmpi/x.y.z (que ser gerenciado pelo Lmod) e instalar a biblioteca neste diretrio.
Os comandos para proceder com a instalao do openmpi esto no listing 5.
$ cd / sw /
$ wget http :// www . open - mpi . org / software / ompi / v1 .10/ downloads / openmpi -1.10.0.
tar . bz2
$ tar xvf openmpi -1.10.0. tar . bz2
$ cd openmpi -1.10.0
$ sudo mkdir -p / opt / apps / openmpi /1.10.0
$ ./ configure -- prefix =/ opt / apps / openmpi /1.10.0 -- with - threads -- enable shared -- enable - static -- enable - mpi - cxx -- enable - mpi - fortran -- enable - cxx
- exceptions -- enable - mpi - profile -- enable - mpi - cxx - seek -- with - hwloc
$ make - j$ ( nproc ) - pipe
$ sudo make inst all
Para conferir se o openmpi foi instalado corretamente basta executar um ls no diretrio /opt/apps/openmpi/1.10.1, como no listing 6.
$ ls / opt / apps / openmpi /1.10.1
bin etc include lib64 share
help (
[[
The Open MPI Project is an open source Message Passing Interface
implementation that is developed and maintained by a consortium of
academic , research , and industry partners . Open MPI is therefore able to
combine the expertise , technologies , and resources from all across the
High Performance Computing community in order to build the best MPI
library available . Open MPI offers advantages for system and software
vendors , application developers and computer science researchers .
]])
local version = " 1.10.0 "
local base = pathJoin ( " / opt / apps / openmpi " , version )
setenv ( " OMPI_MCA_btl " , " openib , sm , self " )
setenv ( " O M P I _ M C A _ b t l _ t c p _ i f _ e x c l u d e i " , " l0 , eth0 " )
prepend_path ( " PKG_CONFIG_PATH " , pathJoin ( base , " / lib64 / pkgconfig " ) )
prepend_path ( " PATH " , pathJoin ( base , " bin " ) )
prepend_path ( " LIBRARY_PATH " , pathJoin ( base , " lib64 " ) )
prepend_path ( " LD_LIBRARY_PATH " , pathJoin ( base , " lib64 " ) )
prepend_path ( " CPATH " , pathJoin ( base , " include " ) )
prepend_path ( " C_INCLUDE_PATH " , pathJoin ( base , " include " ) )
prepend_path ( " MANPATH " , pathJoin ( base , " share / man " ) )
-- Setup Modulepath for packages built by this compiler
local mroot = os . getenv ( " MODULEPATH_ROOT " )
local mdir = pathJoin ( mroot , " Core / openmpi " , version )
prepend_path ( " MODULEPATH " , mdir )
2.2
szip um software de compresso, capaz de comprimir dados cientficos sem perdas e tem sido fornecido
em conjunto com os softwares HDF.
Para criar um mdulo para o szip preciso proceder como para o opempi, criando um diretrio para instalao da biblioteca dentro de /opt/apps/$(NOME)
/$(VERSO) , instalar a lib neste diretrio e posteriormente criar um script no diretrio /opt/apps/modulefiles/$(NOME)/$(VERSO.lua).
No listing 9 contm a sequncia de comandos para baixar, instalar a lib e criar o script lua no local adequado
o contedo do arquivo 2.1.lua est presente no listing 10.
$
$
$
$
$
$
wget http :// www . hdfgroup . org / ftp / lib - external / szip /2.1/ src / szip -2.1. tar . gz
tar xvf szip -2.1. tar . gz
cd szip -2.1/
sudo mkdir -p / opt / apps / szip /2.1
make - j$ ( nproc ) - pipe
sudo make inst all
help (
[[
Szip is an implementation of the extended - Rice lossless compression algorithm
. The Consultative Committee on Space Data Systems ( CCSDS ) has adopted
the extended - Rice algorithm for international standards for space
applications .
]])
local version = " 2.1 "
local base = pathJoin ( " / opt / apps / szip " , version )
prepend_path ( " LIBRARY_PATH " , pathJoin ( base , " lib64 " ) )
prepend_path ( " LD_LIBRARY_PATH " , pathJoin ( base , " lib64 " ) )
prepend_path ( " CPATH " , pathJoin ( base , " include " ) )
-- Setup Modulepath for packages built by this compiler
local mroot = os . getenv ( " MODULEPATH_ROOT " )
local mdir = pathJoin ( mroot , " Core / szip " , version )
prepend_path ( " MODULEPATH " , mdir )
2.3
zlib uma biblioteca de compresso de dados escrita por Gaily e Mark Adler como uma generalizao do
algoritmo DEFLATE usado no programa de compresso de dados gzip.
Para a lib zlib deve proceder de forma semelhante com o a szip seguindo os comandos do listing 11 e 12.
wget http :// zlib . net / zlib -1.2.8. tar . gz
tar xvf zlib -1.2.8. tar . gz
cd zlib -1.2.8/
sudo mkdir -p / opt / apps / zlib /1.2.8
./ configure -- prefix =/ opt / apps / zlib /1.2.8
make
sudo make inst all
sudo mkdir / opt / apps / modulefiles / Core / zlib
sudo vim / opt / apps / modulefiles / Core / zlib /1.2.8. lua
Listing 11: Comandos para baixar e criar o mdulo para a lib szpi.
help (
[[
zlib is compression method , an LZ77 variant called deflation , emits
compressed data as a sequence of blocks .
]])
local version = " 1.2.8 "
local base = pathJoin ( " / opt / apps / zlib " , version )
prepend_path ( " LD_LIBRARY_PATH " , pathJoin ( base , " lib " ) )
prepend_path ( " LIBRARY_PATH " , pathJoin ( base , " lib " ) )
prepend_path ( " CPATH " , pathJoin ( base , " include " ) )
prepend_path ( " C_INCLUDE_PATH " , pathJoin ( base , " include " ) )
prepend_path ( " INCLUDE " , pathJoin ( base , " include " ) )
prepend_path ( " MANPATH " , pathJoin ( base , " share / man " ) )
-- Setup Modulepath for packages built by this compiler
local mroot = os . getenv ( " MODULEPATH_ROOT " )
local mdir = pathJoin ( mroot , " Core / zlib " , version )
prepend_path ( " MODULEPATH " , mdir )
2.4
hdf5 uma biblioteca com modelo de dados e formato de arquivos para armazenar e gerenciar dados. Ele
suporta uma infinidade de tipos de dados e projetado para ter uma leitura e escrita eficiente e flexvel
para dados em complexos e em grande volume.
O mdulo para o hdf5 foi deixado por ltimo propositalmente, pois para que a verso paralela seja instalada
ser preciso do openmpi e tambm das libs de compresso (szip e zlib). Portanto para instalar o hdf5 siga os
comandos do listing 13. O script lua para carregar o mdulo hdf5 no sistema encontra-se no listing 14.
wget http :// www . hdfgroup . org / ftp / HDF5 / current / src / hdf5 -1.8.15 - patch1 . tar . bz2
tar xjvf hdf5 -1.8.15 - patch1 . tar . bz2
cd hdf5 -1.8.15 - patch1 /
sudo mkdir -p / opt / apps / hdf5 /5.1.8.15
./ configure -- prefix =/ opt / apps / hdf5 /1.8.16 CC =/ opt / apps / openmpi /1.10.0/ bin /
mpicc CXX =/ opt / apps / openmpi /1.10.0/ bin / mpic ++ FC =/ opt / apps / openmpi
/1.10.0/ bin / mpif90 F77 =/ opt / apps / openmpi /1.10.0/ bin / mpif77 -- with - szlib =/
opt / apps / szip /2.1 ,/ opt / apps / szip /2.1/ lib64 -- with - zlib =/ opt / apps / zlib
/1.2.8/ include ,/ opt / apps / zlib /1.2.8/ lib FCFLAGS = - fPIC -- enable - shared -enable - static -- enable - par all el -- enable - hl -- enable - fortran -- enable strict - format - checks LDFLAGS = - L / opt / apps / szip /2.1/ lib64 LDFLAGS = - L / opt /
apps / zlib /1.2.8/ lib CFLAGS = - fpic CFLAGS = - D_L ARGE_F ILE64 _SOURC E CFLAGS = D_ FILE_OFFSET_BITS =64
make - j$ ( nproc ) - pipe
sudo make inst all
Listing 13: Comandos para baixar e criar o mdulo para as libs e executveis do hdf5.
help (
[[
HDF5 is a data model , library , and file format for storing and managing data .
It supports an unlimited variety of datatypes , and is designed for
flexible and efficient I / O and for high volume and complex data . HDF5 is
portable and is extensible , allowing applications to evolve in their use
of HDF5 . The HDF5 Technology suite includes tools and applications for
managing , manipulating , viewing , and analyzing data in the HDF5 format .
]])
local version = " 1.8.16 "
local base = pathJoin ( " / opt / apps / hdf5 " , version )
prepend_path ( " PATH " , pathJoin ( base , " bin " ) )
prepend_path ( " LD_LIBRARY_PATH " , pathJoin ( base , " lib64 " ) )
prepend_path ( " LIBRARY_PATH " , pathJoin ( base , " lib64 " ) )
prepend_path ( " CPATH " , pathJoin ( base , " include " ) )
prepend_path ( " C_INCLUDE_PATH " , pathJoin ( base , " include " ) )
prepend_path ( " INCLUDE " , pathJoin ( base , " include " ) )
-- Setup Modulepath for packages built by this compiler
local mroot = os . getenv ( " MODULEPATH_ROOT " )
local mdir = pathJoin ( mroot , " Core / hdf5 " , version )
prepend_path ( " MODULEPATH " , mdir )
Para listar os mdulos disponveis no sistema pode se utilizar o comando module avail. A sada deste comando
deve ser semelhante ao da figura 1.