.. _instalando_aplicacoes: Instalando Aplicações ===================== É bastante comum que o usuário iniciante tente fazer uma instalação em seu ``/home/`` do GridUnesp da mesma forma que faz no computador pessoal. Contudo, num computador pessoal o usuário geralmente tem a senha de *root* e consegue instalar programas na raiz do sistema (locais como ``/usr/``, ``/lib/``). No GridUnesp, todavia, o usuário não tem privilégio de *root*. Então, ao tentar fazer instalações (como se *root* fosse), recebe uma mensagem de erro .. parsed-literal:: ... permission denied ... Mas isso não significa que não possa ter as aplicações/bibliotecas instaladas no cluster. Instalação feita pelo próprio usuário ------------------------------------- Muitas aplicações científicas, softwares e bibliotecas podem ser instaladas em locais diferentes, como no ``/home/`` do usuário. Basta fazer as devidas configurações durante a instalação. Instalando no home ++++++++++++++++++ Na maioria dos casos, as instalações podem ser feitas indicando o local em que deseja que binários, *libs*, *headears* etc. sejam guardados, bastando informar parâmetros como ``--prefix=``. Vamos supor que um usuário chamado *Spock* (cujo login no GridUnesp é **spock**) queira instar uma aplicação ficticia chamada *Enterprise* na pasta ``/home/spock/application/enterprise`` e que a instalação permita usar o parâmetro ``--prefix=`` com o comando ``configure``. O início da instalação então seria realizado com um comando similar a .. code-block:: bash ./configure --prefix=/home/spock/application/enterprise Naturalmente, este é apenas um caso hipotético. Cada aplicação possui suas peculiaridades, devendo o usuário observar com cuidado as instruções da documentação do programa de interesse. Estes cuidados se referem inclusive às variáveis de ambiente que se deve configurar após a instalação. .. _instalando_via_comandos_conda: Instalação via comandos Conda +++++++++++++++++++++++++++++ Algumas aplicações/bibliotecas podem ser facilmente instaladas usando o ambiente `Anaconda `_. Digamos que um usário chamado *Spock*, cujo username seja *spock*, queira instalar os pacotes **Python** e **numpy** para um trabalho que escolheu chamar de *startrek*. Para isso, primeiramente deverá criar um ambiente *Conda* usando os comandos abaixo: .. code-block:: bash module load miniconda/24.4.0-libmamba conda create -n startrek Aqui, *miniconda/24.4.0-libmamba* é o nome do módulo que carrega o ambiente *Conda* (já instalado no cluster) e que contém os comandos necessários. Módulos *miniconda* são mais leves que módulos *anaconda*. Por sua vez, o nome dado ao projeto (*startrek*) pode ser qualquer um que usuário achar conveniente. É recomendável escolher um que seja de fácil percepção para lembrança futura. Em seguida, o usuário deve ativar o ambiente criado usando o comando: .. code-block:: bash source activate startrek o que fará aparecer na tela algo como :: (startrek) [spock@access2 ~]$ Agora, para instalar as aplicações desejados, *Spock* daria os comandos .. code-block:: bash conda install python=3.10.4 conda install numpy Ao utilizar ``python=3.10.4``, o usuário informa a versão exata que deseja instalar. Caso não informe a versão, será instalada a versão mais recente presente no repositório/canal. Importante observar que os pacotes instalados ficam restritos ao projeto/ambiente criado (*startrek*, no exemplo). Para listar todos os pacotes, o comando é .. code-block:: bash conda list Para listar todos os projetos criados (tal qual o *startrek*), o comando é .. code-block:: bash conda info --envs Para desativar o ambiente, o comando é .. code-block:: bash source deactivate startrek Por fim, toda vez que o usário desejar utilizar os pacotes instalados naquele ambiente, basta dar os comandos .. code-block:: bash module load miniconda/24.4.0-libmamba source activate startrek Para mais informações sobre como trabalhar num ambiente *Conda*, consulte a documentação do `Anaconda `_. .. _instalacao_feita_pelo_administrador_do_sistema: Instalação feita pelo administrador do sistema ---------------------------------------------- Há casos em que a instalação é demasiada complexa, ou que há o desejo de que aplicação/biblioteca seja disponibilizada para vários usuários. Neste caso, basta informar à equipe de especialistas do GridUnesp (``support.ncc@unesp.br``) a aplicação/biblioteca de interesse, bem como o link do site de referência contendo informações sobre ela. .. important:: Por vezes, a equipe do GridUnesp poderá sugerir que a instalação seja realizada no próprio ``/home/`` do usuário. Tudo vai depender das características da aplicação/biblioteca em questão. Como exemplo, é bastante recomendado que instalações com versões muito específicas dos pacotes sejam feitas pelo usuário em seu proprío ``/home/``. Por outro lado, àquelas que podem ser úteis para uma quantidade maior de usuários (de um mesmo grupo, que seja) seria mais adequada a instalação via módulo. O GridUnesp utiliza um sistema modular de carregamento de ambiente. Esse sistema permite que sejam disponibilizadas diversas versões de compiladores, bibliotacas e aplicações que, de outra forma, seriam incompatíveis. Uma vez que tenha feito login no GridUnesp, para verificar quais aplicações estão instaladas no cluster, bastar usar o seguinte comando no terminal: .. code-block:: bash module avail Irá aparecer na tela algo como :: ----------------------------------------- /opt/gridunesp/modules ------------------------------------------ allpathslg/44837(default) gcc/10.2.0 openmpi/4.1.5 amber/20(default) gdal/2.4.1 openmpi/4.1.6 anaconda2/5.1.0 ginac/1.7.2(default) openmpi/4.1.6.v2 anaconda3/4.4.0(default) glibc/2.29(default) orca/4.0.1(default) backmap/0.5(default) gmt/5.4.3(default) orca/4.2.1 beagle/2.1.2(default) grace/5.1.25(default) orca/5.0.3 beagle/4.0.0 gridunesp/1(default) orca/5.0.4 beast/1.8.4 gromacs/4.5.4 orca/6.0.0 beast/1.10.4 gromacs/4.5.4-sbm1.0 orca/6.0.1 beast/2.4.7(default) gromacs/5.1.4 partitionfinder/2.1.1(default) boost/1.64.0(default) gromacs/2016.3(default) pfinderuce-swsc-en/1.0.0(default) boost/1.70.0 gromacs/2018.2 phyluce/1.5.0(default) bowtie2/2.3.5.1(default) gsl/2.6(default) platanus/1.2.4(default) busco/5.5.0(default) hmmer/3.1b2(default) plumed/2.7.1(default) charmm/c26b2 intel/compilers/2017(default) quantum-espresso/6.1(default) charmm/c26b2-serial intel/mpi/2017(default) quantum-espresso/6.6 charmm/c37b2(default) java/1.8(default) quantum-espresso/7.2 charmm/c37b2-serial kraken2/2.1.3(default) quest-qmc/1.4.9(default) cln/1.3.4(default) lammps/20170331 R/4.0.2(default) clustalw-mpi/0.13(default) lammps/20180316 raxml-ng/1.0.3(default) clustalw/2.1(default) lammps/20200303(default) raxml/8.2.11(default) cmake/3.9.0(default) lammps/20230802 rnxcmp/4.0.7(default) cmake/3.20.0-rc3 mathematica/9.0 root/6.10.02(default) cp2k/2023.1(default) mathematica/10.4(default) rsem/1.2.25(default) crystal/17_v1.0.2 matlab/R2016b-9.1 salmon/0.14.0(default) crystal/17_v1.0.2_v2(default) matlab/R2019b(default) sga/0.10.15(default) dftbplus/20.2.1(default) migrate-n/5.0.6(default) siesta/4.0.2 dirac/12.3-mpi(default) miniconda/3(default) siesta/4.1-b3(default) dirac/12.3-serial miniconda/3-2023-09 siesta/4.1.5.mpi dirac/12.3-smp miniconda/24.4.0-libmamba siesta/4.1.5.serial eems/0.0.0(default) mkl/2022.2.0(default) siesta/5.2.0.mpi espresso/3.3.1(default) mopac/17.162(default) siesta/5.2.0.serial evigene/23jul15(default) namd/2.12(default) spades/3.15.5(default) exabayes/1.5(default) namd/2.12-tcp stacks/2.4(default) exciting/carbon(default) namd/2.13-smp structure/2.3.4(default) exciting/neon-21 namd/2.13-tcp su2/6.0.0(default) fastStructure/1.0(default) netcdf/c/4.6.3(default) su2/6.2.0 fhi/071914(default) netcdf/fortran/4.4.5(default) swan/41.31-mpi foam-extend/4.0(default) openfoam/4.1 swan/41.31-omp foam-extend/4.1 openfoam/5.x(default) swan/41.31-serial(default) g_mmpbsa/gromacs-5.1 openfoam/7 tesseract/4.00.00alpha(default) gamess/2018(default) openfoam/8 trinity/2.8.5(default) gamess/2020 openfoam/1912 trinity/2.15.1 gamit/10.61 openfoam/2012 udunits2/2.2.26 gamit/10.70(default) openfoam/2112 vasp/6.4.3(default) gaussian/09(default) openmpi/2.1.1(default) vcftools/0.1.16(default) gaussian/09.lsm openmpi/3.1.4 weka/3.8.2(default) gcc/5.3.0 openmpi/4.0.1 xtb/6.6.1(default) gcc/7.2.0(default) openmpi/4.1.1 gcc/9.3.0 openmpi/4.1.1.v2 Supondo que o usuário queira carregar o ambiente (as variáveis de ambiente) do módulo *gcc/10.2.0*, bastar usar o comando .. code-block:: bash module load gcc/10.2.0 Digamos que o usuário tenha carregado os módulos *gcc/10.2.0* e *boost/1.70.0*, mas não lembre quais eram. O comando abaixo irá listar todos os módulos ativos: .. code-block:: bash module list Como resultado, irá aparecer na tela o seguinte resultado: :: Currently Loaded Modulefiles: 1) gridunesp/1(default) 2) gcc/10.2.0 3) boost/1.70.0 Por padrão, o módulo *gridunesp/1* é carregado assim que o usuário faz login no cluster. Este módulo serve para habilitar os scripts para submissão de simulações (jobs). Para desfazer, ou seja, para remover as variáveis de ambiente do módulo carregado, e considerando os exemplos acima, os comandos seriam .. code-block:: bash module unload gcc/10.2.0 module unload boost/1.70.0 .. important:: O cluster do GridUnesp não funciona com *Ubuntu*, como se poderia supor. Anteriormente, o cluster era baseado em Linux com distribuição *CentOS*. Atualmente ele funciona com a distribuição *AlmaLinux*, o qual apresenta compatibilidade 1 para 1 com *CentOS*. Isso significa que todos os comandos que eram usados para *CentOS* funcionam igualmente para *AlmaLinux*. Além disso, caso, em situações bastante excepcionais, seja necessário a equipe do GridUnesp fazer instalações na raiz do sistema, seria utilizado o comando ``yum install`` (em vez do ``apt-get install`` do *Ubuntu*). A seção :ref:`aplicacoes_instaladas` traz a lista das várias aplicações/bibliotecas instaladas via módulo, bem como exemplos simples de scripts de submissão para cada uma delas. Resumo dos comandos de módulo ----------------------------- * Listando módulos disponíveis .. code-block:: bash module avail * Carregando um módulo .. code-block:: bash module load intel/compilers/2017 * Listando os módulos carregados .. code-block:: bash module list * Desativando um módulo .. code-block:: bash module unload intel/compilers/2017