Projeto

Geral

Perfil

Ambiente padronizado de desenvolvimentos

Adicionado por Bastarz, Carlos Frederico quase 3 anos atrás

Prezados,

Seguindo as ideias iniciais do Luiz Flávio e as discussões realizadas na reunião do dia 22/07/2021, vou relatar minha breve experiência com containers do Singularity. Em Março de 2021, participei de uma das edições rápidas do JEDI Academy. Nesta oportunidade, os participantes realizaram partes do sistema de assimilação de dados JEDI na AWS, utilizando um ambiente padronizado em máquinas padronizadas. Este ambiente padronizado foi fornecido por meio de um container com todas as ferramentas de compilação e execução (eg., compilador Fortran, Python, MPI etc) já instaladas e prontas para uso. Um container nada mais é do que uma imagem de um sistema com estas ferramentas instaladas que podem ser utilizadas por meio de uma chamada do programa singularity (que deve ser instalado na máquina).

Nesse sentido, o container fornece um sistema padronizado e compartilhável para uso. Isto significa que as mesmas ferramentas e versões destas são fornecidas pela imagem do container, as quais podem ser usadas e compartilhadas em diferentes ambientes computacionais. Apesar deste aspecto ser bastante atraente, nunca tive a oportunidade de testar a execução de um mesmo container em máquinas com arquiteturas diferentes. Atualmente, utilizo um container customizado, construído com base no Ubuntu 18.04 em uma máquina (host) com sistema operacional OS X. Este mesmo container, em tese, deve funcionar em outras máquinas (arquiteturas e sistemas operacionais), desde que o singularity esteja instalado na máquina.

Um vantagem que percebi com a utilização do container, é a possibilidade de utilizar o MPI para a execução de programas que foram compilados com os compiladores e bibliotecas do container. No meu uso específico, por exemplo, tenho uma máquina virtual Linux na qual executo o container singularity para compilar o modelo global do CPTEC e outras ferramentas de uso do centro. Na máquina virtual, tenho o agenciador de jobs Torque instalado e o utilizo para fazer as submissões da mesma forma (e com os mesmos scripts) como é feito na Tupã ou no XC50.

Por que isso pode ser importante?

Porque se todos puderem desenvolver o MCSTU utilizando as mesmas ferramentas de desenvolvimento e nas mesmas versões, podemos minimizar fontes indesejáveis de problemas que não estão, a princípio, relacionadas com os códigos do MCSTU em si. Além disso, é uma forma (teoricamente) de se ter o mesmo sistema de desenvolvimento disponível para uso em supercomputadores (depende da instalação do singularity), clusters, workstations, desktops e notebooks.


Respostas (2)

RE: Ambiente padronizado de desenvolvimentos - Adicionado por Bastarz, Carlos Frederico mais de 2 anos atrás

Uma 'receita de bolo' sobre a criação de um container do singularity, foi adicionada em https://github.com/cfbastarz/SingularityRecipe/blob/main/README.md.

RE: Ambiente padronizado de desenvolvimentos - Adicionado por Bastarz, Carlos Frederico mais de 2 anos atrás

Um documento inicial com a referida receita, para discussão, foi adicionado ao trunk do repositório em https://projetos.cptec.inpe.br/projects/mcstu/repository/show/trunk/documentos/singularity

At.te,

Carlos

    (1-2/2)