Bem-vindo ao mundo de Marvin!

Este manual foi criado para ajudar os usuários a utilizar o HPCC Marvin. Apesar de ser um pouco mal-humorado às vezes, Marvin está sempre disposto a te ajudar!

"Você acha que VOCÊ tem problemas? Experimente ser um robô maníaco depressivo..."
— Marvin, O Guia do Mochileiro das Galáxias

O que é HPCC?

HPCC (High Performance Computing Cluster) é um sistema de computação que combina múltiplos computadores (chamados nós) para trabalhar juntos em tarefas complexas, que requerem grande poder de processamento. O HPCC é projetado para lidar com grandes volumes de dados e realizar cálculos intensivos, tornando-o ideal para aplicações científicas, simulações, modelagem e análise de dados.

Sobre o HPCC Marvin

Marvin é nome do HPCC do LNBio/CNPEM, adquirido em 2022 da empresa Atos, empresa especializada em soluções de HPC e responsável por alguns dos maiores supercomputadores do Brasil e do mundo, como o Santos Dumont.

O HPCC Marvin está hospedado no Data Center do Sirius/LNLS. Para informações sobre a arquitetura do HPCC Marvin, veja a seção Arquitetura.

Acesso ao HPCC Marvin

Para começar a utilizar o HPCC Marvin, veja os Primeiros Passos.

Primeiros passos

Para ativar seu usuário no HPCC Marvin, é necessário fazer um primeiro acesso via ssh (Secury SHell), protocolo de rede seguro que permite a comunicação com servidores remotos.

Primeiro acesso 🚪

O primeiro acesso ao HPC Marvin é feito através do terminal Terminal logo (Linux ou MacOS) ou do PowerShell PowerShell logo (Windows). Para isso, use o seguinte comando:

ssh <seu.login.cnpem>@marvin.cnpem.br
Se você é a Marie Skłodowska-Curie, seu e-mail institucional é marie.curie@lnbio.cnpem.br. Logo, seu usuário é marie.curie. Sempre que encontrar <seu.login.cnpem>, digite marie.curie.

Quando solicitado, digite sua senha institucional.

Você pode receber um aviso solicitando sua confirmação antes de continuar conectando.

[...] Are you sure you want to continue connecting (yes/no/[fingerprint])?

Digite yes e pressione enter. Se tudo correu bem, você verá o cursor piscando no terminal, com um texto semelhante a:

[<seu.login.cnpem>@marvin ~]$

Após o primeiro login, você já poderá ler e gravar arquivos na aba Files do Open OnDemand (OOD), porém ainda não terá permissão para criar jobs, submeter tarefas ao SLURM ou utilizar os Interactive Apps.

Essa autorização é concedida manualmente. Para solicitá-la, registre um chamado na [LNBio] Suporte EDB do Jira em HPCC Marvin: Suporte ao usuário.

Se estiver no Windows e receber o seguinte erro, solicite ao TIC para instalar o ssh ou tente usar outro computador.

ssh: O termo 'ssh' não é reconhecido como nome de cmdlet, função, arquivo de script
ou programa operável. Verifique a grafia do nome ou, se um caminho tiver sido incluído,
veja se o caminho está correto e tente novamente.
Na linha:1 caractere:1
+ ssh marie.curie@marvin.cnpem.br
+ ~~~
    + CategoryInfo          : ObjectNotFound (ssh:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Acesso pelo navegador Browser Icons

Para acessar o HPCC Marvin pelo navegador, abra seu navegador e acesse:

https://marvin.cnpem.br

Lembre-se que este endereço só funcionará na rede interna do CNPEM. Para acessá-lo de fora do centro, é necessário usar a VPN. Caso não tenha este acesso à VPN, entre em contato com o DTI.

Na tela de login, use seu usuário (sem @lnbio.cnpem.br) e senha institucional.

Open on Demand @ firefox

Após o login, você verá a interface principal do Open OnDemand:

Open on Demand logged in

Vídeo resumo

Abaixo, você pode ver um vídeo que resume os primeiros acesso ao HPCC Marvin, tanto pelo terminal quanto pelo navegador.

Se você tiver alguma dúvida ou precisar de ajuda, não hesite em entrar em contato com a equipe de suporte do sistema.

Arquitetura

Essa seção apresenta a arquitetura do HPCC Marvin, com informações detalhadas sobre:

Hardware

O hardware do HPCC Marvin foi adquirido em 2022 da empresa Atos, com investimento aproximado de US$350000. O cluster está fisicamente instalado no Data Center do Sirius/LNLS, contando com infraestrutura de refrigeração e energia.

O cluster é composto por um conjunto de servidores, chamados de nós, organizados conforme a topologia tradicional de um cluster HPC:

  • 01 nó de login (head node): ponto de entrada dos usuários, onde comandos são executados e jobs são submetidos.
  • 01 nó de computação em CPU (CPU node): dedicado à execução de jobs que requerem alto desempenho de processamento em CPU.
  • 01 nó de computação em GPU (GPU node): dedicado à execução de jobs que se beneficiam de aceleração por GPU.
  • 01 sistema de armazenamento de alta performance (high performance storage system): sistema de arquivos compartilhado baseado em Lustre, voltado para I/O paralelo de alta velocidade.

As especificações técnicas de cada nó estão apresentadas na tabela a seguir:

CPURAMGPUArmazenamento
LoginAMD EPYC 7352 24-Core @ 2.4 GHz256 GBNVIDIA A40 (48 GB)N/A
CPUAMD EPYC 7742 64-Core @ 2.25 GHz1 TBN/AN/A
GPUAMD EPYC 7742 64-Core @ 2.25 GHz2 TB8x NVIDIA A100 (40 GB)N/A
Storage HPCN/AN/AN/A300 TB

Sistema Operacional

O HPCC Marvin utiliza o sistema operacional Rocky Linux 8.5, que é configurado de forma padronizada em todos os nós do HPCC, incluindo o nó de login, nós de computação (CPU e GPU) e o nó de Storage HPC.

Sistema de filas

Em ambientes HPC, é comum que múltiplos usuários estejam logados e executando jobs simultaneamente. Para gerenciar eficientemente a alocação de recursos (CPU, GPU, memória, etc) e a ordem de execução desses jobs, são usados sistemas de gerenciamento de filas.

O gerenciador de filas usado é o SLURM v21.08.8-2, que organiza a execução por meio de filas, chamadas de partitions, que armazenam os jobs submetidos pelos usuários. Assim que os recursos solicitados estão disponíveis, o SLURM inicia a execução dessas tarefas de forma automática.


Todos os jobs devem ser submetidos através do SLURM.

As filas de execução do HPCC Marvin são:

FilaTempo limitecpus-per-task (limite)mem-per-cpu (default)mem-per-cpu (limite)GPU
debug-cpu30 minutos21GB2GBNão
gui-cpu12 horas81GB4GBNão
short-cpu5 dias641GB4GBNão
long-cpu15 dias321GB4GBNão
debug-gpu-small30 minutos21GB2GBSim (5GB)
gui-gpu-small12 horas81GB4GBSim (5GB)
short-gpu-small5 dias641GB8GBSim (5GB)
long-gpu-small15 dias321GB8GBSim (5GB)
debug-gpu-big30 minutos21GB2GBSim (40GB)
gui-gpu-big12 horas81GB4GBSim (40GB)
short-gpu-big5 dias641GB8GBSim (40GB)
long-gpu-big15 dias321GB8GBSim (40GB)

Gerenciamento de jobs

Os jobs no HPCC Marvin são administrados pelo gerenciador de recursos computacionais SLURM (Simple Linux Utility for Resource Management) v21.08.8-2.

Essa seção apresenta infomações sobre gerenciamento de jobs, com informações detalhadas sobre:

Referências adicionais

O que é SLURM?

O SLURM (Simple Linux Utility for Resource Management) é um sistema de gerenciamento de filas de código aberto projetado para organizar o acesso aos recursos computacionais em um cluster. Ele permite que múltiplos usuários compartilhem os recursos do cluster de forma eficiente.

O que é um job?

Um job é uma tarefa computacional submetida para execução no cluster, como scripts, programas, simulações ou qualquer outro tipo de processamento.

No HPCC Marvin, os jobs são enviados ao SLURM por meio de scripts de submissão. O SLURM insere os jobs em uma fila e os executa conforme a disponibilidade dos recursos, seguindo políticas de agendamento definidas.

Cada job pode variar em complexidade: desde a execução de um único comando até fluxos compostos por múltiplas etapas e dependências. Os usuários podem especificar requisitos como número de CPUs, quantidade de memória, uso de GPUs e tempo estimado de execução.

Os jobs podem ser executados em segundo plano (sbatch) ou de forma interativa (srun --pty bash -i), conforme a necessidade. O SLURM também oferece recursos avançados, como monitoramento em tempo real, controle de dependências e suporte à retomada em caso de falhas.

Submissão de jobs

Para submeter um job, você deve criar um script de submissão com os parâmetros adequados e usar o comando sbatch:

sbatch teste.sh

O script de submissão define as características do trabalho, como nome, partição, número de nós e CPUs, memória, tempo máximo de execução, e arquivos de saída. Um exemplo básico:

#!/bin/bash
#SBATCH --job-name=teste
#SBATCH --partition=debug-cpu
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=1G
#SBATCH --time=00:10:00
#SBATCH --output=output_%j.log

echo "Olá do cluster Marvin!"
hostname
date
sleep 60
echo "Trabalho concluído."

Solicitando recursos específicos

  • Para solicitar GPUs:
#SBATCH --gres=gpu:1
  • Para especificar uma partição (fila):
#SBATCH --partition=short-gpu-small

Trabalhos interativos

Você pode iniciar uma sessão interativa com:

srun --pty bash -i

Ou com recursos definidos:

srun --partition=short-gpu-small --gres=gpu:1 --cpus-per-task=4 --mem=8G --time=01:00:00 --pty bash -i

Monitoramento de jobs

Para acompanhar o status dos seus jobs, você pode usar o comando squeue:

squeue -u $USER

Para obter informações detalhadas de um job específico, use o comando scontrol:

scontrol show job <job_id>  

Substitua <job_id> pelo ID do seu job.

Cancelamento de jobs

Para cancelar um job específico, use o comando scancel seguido do ID do job:

scancel <jon_id>

Substitua <job_id> pelo ID do seu job.

Para cancelar todos os seus jobs em execução ou na fila, use o seguinte comando:

scancel -u $USER

Sempre verifique o status do seus jobs antes de cancelá-los.

Verificando recursos disponíveis

O SLURM fornece ferramentas para verificar a disponibilidade de recursos no cluster. Para visualizar as partições disponíveis e seus limites, você pode usar o comando:

sinfo

Esse comando exibe informações sobre as partições, incluindo o número de nós disponíveis, o número de nós ocupados e o estado atual de cada partição.

Para visualizar informações detalhadas sobre os nós, incluindo o estado de cada nó, você pode usar:

sinfo -N -l

Esse comando fornece uma visão detalhada de cada nó, incluindo informações sobre a memória, CPUs e o estado atual.

Boas práticas

Para garantir o uso eficiente do sistema e evitar problemas durante a execução de jobs, siga estas boas práticas:

  • Especifique os recursos necessários: Solicite apenas o que for necessário para evitar desperdício e facilitar o agendamento.

  • Defina um tempo limite adequado: Um tempo muito curto pode interromper seu job; muito longo pode atrasar a fila.

  • Utilize o arquivo de saída: Monitore a execução do job e facilite a depuração de erros.

  • Faça testes com jobs menores: Teste seu pipeline com dados ou tempos reduzidos antes de escalar para execuções maiores.

  • Evite sobrecarga de I/O: Reduza o número de acessos simultâneos ao sistema de arquivos compartilhado sempre que possível.

  • Não processar dados no nó de login: Execute seus scripts e comandos de processamento de dados apenas dentro de um job para evitar sobrecarga no nó de login.

Gerenciamento de dados

Os dados são gerenciados a nível de usuário no HPCC Marvin.

Essa seção apresenta informações sobre gerenciamento de dados, com informações detalhadas sobre:

⚠️ Ainda não há sistema de backup no HPCC Marvin.

Todos os dados armazenados pelos usuários (dados, scripts, resultados, arquivos temporários, etc) são de responsabilidade do usuário.

Recomenda-se fortemente o uso do sistema de controle de versão Git sempre que possível, a fim de manter um histórico de alterações e facilitar a recuperação de informações.

Armazenamento de dados

O HPCC Marvin fornece duas opções principais de armazenamento de dados: pasta pessoal e pasta compartilhada por grupos de pesquisa.

Pasta pessoal

Cada usuário do HPCC Marvin tem acesso a um espaço de armazenamento pessoal, onde pode armazenar e compartilhar seus dados.

Se você é a Marie Skłodowska-Curie e seu usuário é marie.curie, sua pasta estará localizado em /home/marie.curie. Você acessa sua pasta pessoal ao fazer login no sistema, e ela é automaticamente montada como seu diretório inicial ($HOME).

Esta pasta (e.g., seu HOME) é exclusiva para cada usuário e é utilizado para guardar arquivos, scripts, resultados e dados intermediários necessários apenas para suas atividades de pesquisa.

Pasta compartilhada por grupos de pesquisa

Os grupos de pesquisa podem solicitar uma pasta compartilhada para armazenar dados que precisam ser acessados por vários membros do grupo.

Esta pasta é criada em um diretório específico, como /shared/groups/<sigla-do-grupo>.

Para solicitar uma pasta compartilhada, registre um chamado na [LNBio] Suporte EDB do Jira em HPCC Marvin: Suporte ao usuário. Informe o nome do grupo de pesquisa e a sigla que deseja (/shared/groups/<sigla-do-grupo>).

Após a criação da pasta, o solicitante deverá compartilhar a pasta com os demais membros do grupo. Para mais informações sobre como compartilhar o acesso a essa pasta compartilhada, consulte a seção de Compartilhamento de dados.

Transferência de dados

O HPCC Marvin oferece várias opções para transferir dados entre o sistema e seu computador local. As principais ferramentas para essa tarefa são: SFTP, SCP e Rsync.

SSH File Transfer Protocol (SFTP)

O SFTP é um protocolo seguro que permite a transferência de arquivos entre sistemas operacionais diferentes. É útil quando você precisa transferir arquivos de forma segura. Para usar o SFTP, execute o seguinte comando:

sftp <seu.login.cnpem>@marvin.cnpem.br

Após se conectar, você pode usar comandos como:

  • ls: lista os arquivos no diretório atual;
  • cd: navega para um diretório específico;
  • put: envia um arquivo do seu computador local para o HPCC Marvin;
  • get: baixa um arquivo do HPCC Marvin para o seu computador local.

Secure Copy Protocol (SCP)

O SCP (Secure Copy Protocol) é outro protocolo seguro que usa a criptografia SSH para transferir arquivos. Ele é semelhante ao SFTP, mas é mais simples de usar e não tem recursos de navegação.

Para transferir um arquivo (e.g., file.txt) do seu computador local para o HPCC Marvin, use o comando:

scp file.txt <seu.login.cnpem>@marvin.cnpem.br:/caminho/de/destino/

Para transferir um diretório (e.g., directory/) do seu computador local para o HPCC Marvin, use o comando:

scp -r directory/ <seu.login.cnpem>@marvin.cnpem.br:/caminho/de/destino/

Para transferir um arquivo (e.g., file.txt) do HPCC Marvin para o seu computador local, use o comando:

scp <seu.login.cnpem>@marvin.cnpem.br:/caminho/do/arquivo/file.txt /caminho/local/de/destino/

Para transferir um diretório (e.g., directory/) do HPCC Marvin para o seu computador local, use o comando:

scp -r <seu.login.cnpem>@marvin.cnpem.br:/caminho/do/diretorio/directory/ /caminho/local/de/destino/
Para os usuários do Windows, o SCP pode ser usado através do WinSCP, que é uma ferramenta gráfica que facilita a transferência de arquivos via SCP.

Rsync

O Rsync é um protocolo de transferência de arquivos que pode sincronizar diretórios entre hosts. Ele usa uma conexão segura SSH e é útil para transferir grandes quantidades de dados ou sincronizar arquivos entre sistemas.

Para transferir um arquivo (e.g., file.txt) do seu computador local para o HPCC Marvin, use o comando:

rsync -avz file.txt <seu.login.cnpem>@marvin.cnpem.br:/caminho/de/destino/

Para transferir um diretório (e.g., directory/) do seu computador local para o HPCC Marvin, use o comando:

rsync -avz directory <seu.login.cnpem>@marvin.cnpem.br:/caminho/de/destino/

Para transferir um arquivo (e.g., file.txt) do HPCC Marvin para o seu computador local, use o comando:

rsync -avz <seu.login.cnpem>@marvin.cnpem.br:/caminho/do/arquivo/file.txt /caminho/local/de/destino/

Para transferir um diretório (e.g., directory/) do HPCC Marvin para o seu computador local, use o comando:

rsync -avz <seu.login.cnpem>@marvin.cnpem.br:/caminho/do/diretorio/directory/ /caminho/local/de/destino/
A flag -a mantém as permissões de arquivos, a flag -v mostra o progresso da transferência e a flag -z comprime os dados antes de transferi-los.

Compartilhamento de dados

Os dados são compartilhados a nível de usuário no HPCC Marvin, usando o sistema de controle de acesso do Linux, conhecido como Access Control Lists (ACLs). As ACLs permitem que você defina permissões específicas para usuários e grupos em diretórios e arquivos, facilitando o compartilhamento seguro de dados entre usuários.

Para garantir a segurança e a privacidade dos dados, cada diretório de usuário no HPCC Marvin possui permissão 700 ou u:rwx, g:---, o:---. Isso significa que apenas o próprio usuário "u" tem permissão de leitura "r", escrita w e execução x, enquanto membros do grupo g e outros usuários o não têm acesso.

No entanto, em alguns casos, você pode precisar permitir o acesso a determinados diretórios, como para compartilhar um projeto com outros usuários.

Usando o ACL para compartilhar dados

Nesta seção, vamos usar o usuário hipotético marie.curie como exemplo para demonstrar como compartilhar dados com outros usuários no HPCC Marvin.

Verificando as permissões

Para verificar as permissões de um arquivo ou um diretório específico, use o seguinte comando no terminal:

getafcl /caminho/do/diretorio_ou_arquivo

Por exemplo, para verificar as permissões do seu HOME, você pode usar:

$ getafcl /home/marie.curie
# file: /home/marie.curie
# owner: marie.curie
# group: domain\040users
user::rwx
group::---
other::---

Concedendo permissão de acesso a outros usuários

Primeiramente, para compartilhar um arquivo ou diretório com outros usuários, você precisa começar alterarando as permissões do diretório $HOME para 711. Para isso, use o comando:

chmod 711 /home/marie.curie

Então, cheque as mudanças com o comando getfacl:

$ getfacl /home/marie.curie
# file: /home/marie.curie
# owner: marie.curie
# group: domain\040users
user::rwx
group::--x
other::--x

Em seguida, você pode usar o comando setfacl para adicionar permissões de acesso a outros usuários. Por exemplo, para conceder permissão de leitura ao usuário "joao.guerra" no diretório "pasta_compartilhada", use o comando:

setfacl -m u:joao.guerra:r-x /home/marie.curie/pasta_compartilhada
A opção x foi adicionado para que o usuário consiga executar o comando ls e listar os arquivos dentro do diretório compartilhado.

Então, cheque as mudanças com o comando getfacl:

$ getfacl /home/marie.curie/pasta_compartilhada
# file: /home/marie.curie/pasta_compartilhada
# owner: marie.curie
# group: domain\040users
user::rwx
user:joao.guerra:r-x
group::--x
mask::r-x
other::--x

Caso você queira dar permissões de acesso recursivamente para todos os arquivos e subdiretórios dentro de "pasta_compartilhada", você pode usar a opção -R:

setfacl -R -m u:joao.guerra:r-x /home/marie.curie/pasta_compartilhada

Caso você queira conceder acesso para todas os arquivos e subdiretórios que podem ser criados dentro de "pasta_compartilhada", você pode usar a opção -d:

setfacl -d -m u:joao.guerra:r-x /home/marie.curie/pasta_compartilhada

Então, cheque novamente as mudanças com o comando getfacl:

$ getfacl /home/marie.curie/pasta_compartilhada
# file: /home/marie.curie/pasta_compartilhada
# owner: marie.curie
# group: domain\040users
user::rwx
user:joao.guerra:r-x
group::--x
mask::r-x
other::--x
default:user::rwx
default:user:joao.guerra:r-x
default:group::--x
default:mask::r-x
default:other::--x

Para adicionar mais permissões, você pode usar outras opções como w para escrita e x para execução. Por exemplo, para dar ao usuário "joao.guerra" permissão de escrita e execução na pasta "pasta_compartilhada", use o comando:

setfacl -m u:joao.guerra:rwx /home/marie.curie/pasta_compartilhada

Então, cheque novamente as mudanças com o comando getfacl:

$ getfacl /home/marie.curie/pasta_compartilhada
# file: /home/marie.curie/pasta_compartilhada
# owner: marie.curie
# group: domain\040users
user::rwx
user:joao.guerra:rwx
group::--x
mask::rwx
other::--x
default:user::rwx
default:user:joao.guerra:r-x
default:group::--x
default:mask::r-x
default:other::--x

Removendo permissões de acesso

Para remover as permissões de acesso de um usuário específico, utilize o comando setfacl -x seguido do usuário desejado. Por exemplo, para remover as permissões de acesso do usuário "joao.guerra" no diretório "pasta_compartilhada", use o comando:

setfacl -x u:joao.guerra /home/marie.curie/pasta_compartilhada

Então, cheque novamente as mudanças com o comando getfacl:

$ getfacl /home/marie.curie/pasta_compartilhada
# file: /home/marie.curie/pasta_compartilhada
# owner: marie.curie
# group: domain\040users
user::rwx
group::--x
other::--x
default:user::rwx
default:user:joao.guerra:r-x
default:group::--x
default:mask::r-x
default:other::--x

Caso você queira remover permissões de acesso recursivamente para todos os arquivos e subdiretórios dentro de "pasta_compartilhada", você pode usar a opção -R:

setfacl -R -x u:joao.guerra /home/marie.curie/pasta_compartilhada

Caso você queira remover acesso para todas os arquivos e subdiretórios que podem ser criados dentro de "pasta_compartilhada", você pode usar a opção -d:

setfacl -d -x u:joao.guerra /home/marie.curie/pasta_compartilhada

Então, cheque novamente as mudanças com o comando getfacl:

$ getfacl /home/marie.curie/pasta_compartilhada
# file: /home/marie.curie/pasta_compartilhada
# owner: marie.curie
# group: domain\040users
user::rwx
group::--x
mask::--x
other::--x
default:user::rwx
default:group::--x
default:mask::--x
default:other::--x

Para remover todas as permissões de acesso, você pode usar o comando setfacl -b seguido do caminho do diretório. Por exemplo, para remover todas as permissões de acesso no diretório "pasta_compartilhada", use o comando:

setfacl -b /home/marie.curie/pasta_compartilhada

Então, cheque novamente as mudanças com o comando getfacl:

$ getfacl /home/marie.curie/pasta_compartilhada
# file: /home/marie.curie/pasta_compartilhada
# owner: marie.curie
# group: domain\040users
user::rwx
group::--x
other::--x

Para facilitar o acesso a pastas compartilhadas, você pode criar links simbólicos (atalhos) para essas pastas em seu HOME. Isso é especialmente útil quando você precisa acessar frequentemente uma pasta compartilhada sem precisar navegar até o caminho completo toda vez.

Para criar um link simbólico, você pode usar o comando ln -s seguido do caminho da pasta compartilhada e do caminho onde deseja criar o link. Por exemplo, se você quiser criar um link simbólico para a pasta compartilhada /shared/groups/edb no seu diretório HOME, você pode usar o seguinte comando:

ln -s /shared/groups/edb /home/marie.curie/edb
Programas que estão instalados via singularity podem não ter acesso a pastas compartilhadas. Para resolver isso, você pode usar o comando singularity run --bind /caminho/da/pasta/compartilhada:/caminho/dentro/do/container imagem.sif.

Referências adicionais

Princípios FAIR

Os princípios FAIR são diretrizes para tornar os dados de pesquisa mais acessíveis, interoperáveis e reutilizáveis. FAIR é um acrônimo que significa:

  • Findable: Os dados devem ser fáceis de encontrar por humanos e máquinas.
  • Accessible: Os dados devem ser acessíveis de forma clara e transparente, com informações sobre como obtê-los.
  • Interoperable: Os dados devem ser compatíveis com outros conjuntos de dados e sistemas, permitindo a integração e o uso conjunto.
  • Reusable: Os dados devem ser descritos de forma que possam ser reutilizados em diferentes contextos e por diferentes usuários.

Ambiente de desenvolvimento

O HPCC Marvin oferece flexibilidade para que os usuários configurem seus próprios ambientes de desenvolvimento. O gerenciamento de ambientes é feito a nível de usuário, permitindo que cada usuário personalize seu ambiente de acordo com as necessidades dos seus projetos.

⚠️ O Marvin ainda NÃO utiliza módulos de ambiente (como Lmod) para gerenciamento de ambientes e bibliotecas. Cada usuário é responsável pela criação, manutenção e ativação dos seus próprios ambientes.

Gerenciamento de Ambientes

Os usuários podem criar e gerenciar seus próprios ambientes utilizando ferramentas como:

  • conda: Ambiente e gerenciamento de pacotes para Python, R, C/C++ e outras linguagens.

  • uv: Gerenciador de ambientes Python extremamente rápido e leve, compatível com pip e pyproject.toml.

⚠️ Ferramentas como conda e uv não estão pré-instaladas no sistema. Cada usuário deve realizar a instalação dessas ferramentas em seu ambiente pessoal ou no espaço de projeto, conforme necessário.

Para instalar o conda, execute:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

Para instalar o uv, execute:

curl -sSL https://astral.sh/uv/install.sh | bash

Compiladores

O Marvin oferece suporte para desenvolvimento de aplicações em C, C++, Fortran e outros, com os seguintes compiladores e ferramentas de build disponíveis no ambiente padrão:

FerramentaDescrição
gccCompilador GNU para C
g++Compilador GNU para C++
gfortranCompilador GNU para Fortran
clangCompilador LLVM para C
clang++Compilador LLVM para C++
makeGerenciador de build tradicional
cmakeSistema de build multiplataforma

Boas práticas

Para garantir um ambiente de desenvolvimento eficiente e organizado, recomenda-se:

  • Instale seus ambientes no seu diretório pessoal (/home/marie.curie) ou no seu espaço de projeto.
  • Utilize ferramentas como conda, mamba ou uv para gerenciar dependências e ambientes virtuais.
  • Mantenha seus ambientes organizados e evite acumular múltiplos ambientes desnecessários.
  • Documente seus ambientes e dependências em um arquivo README.md, pyproject.toml (uv/pip), requirements.txt (uv/pip) e/ou environment.yml (conda/mamba), para facilitar o compartilhamento e a reprodução do ambiente por outros usuários.

Aplicativos e Programas

No HPCC Marvin, os aplicativos e programas são disponibilizados principalmente por meio de containers Singularity, que estão localizados no diretório /opt/images. Eventualmente, alguns podem estar disponíveis fora de containers, quando há necessidades específicas ou limitações técnicas.

Os aplicativos e programas disponíveis são:

Para instalar ou atualizar um aplicativo ou programa, você deve registrar um chamado [LNBio] Suporte EDB do Jira em HPCC Marvin: Aplicativos, Programas e Sistemas.

AlphaFold

O AlphaFold é um programa de modelagem de estrutura proteicas utilizando redes neurais artificiais (Deep Learning). Além de proteínas individuais, ele também permite modelar multímeros e complexos.

Para mais informações sobre o AlphaFold, acesse https://github.com/deepmind/alphafold/.

Como executar o AlphaFold no HPCC Marvin

Para executar o AlphaFold, são necessários os seguintes passos:

  1. Crie uma pasta contendo o arquivo FASTA da(s) proteína(s) que deseja modelar. Exemplo: fasta_dir.

  2. Crie um script de submissão no SLURM através do sbatch

Abaixo, está o conteúdo de um script de submissão (p. ex. sbatch nova_tarefa_alphafold.sh) do job no SLURM:

#!/bin/sh
#SBATCH --job-name=alphafold
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --partition=short-gpu-small
#SBATCH --mem-per-cpu=8G
#SBATCH --gres=gpu:1g.5gb:1

# essa variável aponta para o banco de dados utilizado pelo alphafold (NÃO ALTERE)   
ALPHAFOLD_DB=/public/alphafold_db_20220825

# imagem do singularity onde o alphafold está instalá-do (NÃO ALTERE)
ALPHAFOLD_SIF=/opt/images/alphafold/alphafold-2_3_2.sif

# essa variável aponta para o arquivo fasta (MUDE PARA O SEU ARQUIVO) 
FASTA_FILE=./fasta_dir/P01308.fasta

# nome da pasta onde os modelos e resultados serão salvos (PODE MUDAR PARA UM NOME QUE ESCOLHER)
OUTPUT_DIR=./results

# comando de execução do AlphaFold
singularity run --nv -B $ALPHAFOLD_DB:/database $ALPHAFOLD_SIF \
    --fasta_paths=$FASTA_FILE \
    --output_dir=$OUTPUT_DIR \
    --data_dir=/database/ \
    --template_mmcif_dir=/database/pdb_mmcif/mmcif_files/ \
    --obsolete_pdbs_path=/database/pdb_mmcif/obsolete.dat \
    --uniref90_database_path=/database/uniref90/uniref90.fasta \
    --mgnify_database_path=/database/mgnify/mgy_clusters_2018_12.fa \
    --pdb70_database_path=/database/pdb70/pdb70 \
    --uniclust30_database_path=/database/uniclust30/uniclust30_2018_08/uniclust30_2018_08 \
    --bfd_database_path=/database/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
    --max_template_date=`date +'%Y-%m-%d'` \
    --use_gpu_relax 
  1. Subsitua os valores das variáveis ALPHAFOLD_SIF, FASTA_FILE e OUTPUT_DIR conforme necessário.

O ALPHAFOLD_SIF deve apontar para a imagem do Singularity do AlphaFold, que possui as seguintes versões:

  • versão 2.3.2: /opt/images/alphafold-2_3_2.sif
  • versão 2.2.4: /opt/images/alphafold-2_2_4.sif
  • versão 2.2.3: /opt/images/alphafold-2_2_3.sif

O FASTA_FILE deve apontar para o arquivo FASTA da proteína que você deseja modelar.

O OUTPUT_DIR é onde os resultados serão salvos.

  1. Submeta o script de submissão no SLURM. Você pode fazer isso através do comando sbatch:
sbatch nova_tarefa_alphafold.sh

Para verificar os argumentos aceitos pelo AlphaFold, você pode executar o seguinte comando:

singularity run /opt/images/alphafold/alphafold-2_3_2.sif --helpshort

Cellprofiler

O CellProfiler é um programa de código aberto amplamente utilizado para análise de imagens biológicas. Ele permite a quantificação de características celulares em imagens, facilitando a análise de grandes conjuntos de dados.

Para mais informações sobre o CellProfiler, acesse https://cellprofiler.org/.

Como executar o CellProfiler no Open OnDemand

Para executar o CellProfiler, são necessários os seguintes passos:

  1. Acesse o Open OnDemand do HPCC Marvin em https://marvin.cnpem.br/.

  2. Em Interactive Apps, abra uma VNC.

  3. No formulário da VNC, selecione a partição gui-gpu-small e defina o número de horas, número de GPUs e número de CPUs conforme necessário. Clique em Launch.

  4. Uma nova janela será aberta com a VNC. Aguarde até que a VNC esteja ativa (Running) e clique em Launch VNC.

  5. Uma vez que a VNC estiver ativa, abra um terminal dentro da VNC.

  6. No terminal, execute o seguinte comando para iniciar o CellProfiler:

    singularity run --nv /opt/images/cellprofiler/cellprofiler-4_2_6.sif ~/Desktop/session.out
    

O CellProfiler possui as seguintes versões disponíveis:

  • versão 4.2.6: /opt/images/cellprofiler-4_2_6.sif
  • versão 4.2.4: /opt/images/cellprofiler-4_2_4.sif

Além disso, você também pode executar a CLI do CellProfiler diretamente no terminal (sem interface gráfica), utilizando o seguinte comando:

singularity run --nv /opt/images/cellprofiler/cellprofiler-4_2_6.sif -c -r -p proj.cppipe
Os parâmetros utilizados nesse comando são:
  • -c: Executa o CellProfiler em modo CLI (sem interface gráfica).
  • -r: Executa o pipeline na inicialização.
  • -p: Especifica o caminho para o pipeline que será executado (proj.cppipe).

Ilastik

O Ilastik é uma ferramenta de aprendizado de máquina interativa para análise de imagens, especialmente útil para tarefas como segmentação, classificação e rastreamento de objetos em imagens biológicas.

Para mais informações sobre o Ilastik, acesse https://www.ilastik.org/documentation/.

Como executar o Ilastik no Open OnDemand

Para executar o Ilastik, são necessários os seguintes passos:

  1. Acesse o Open OnDemand do HPCC Marvin em https://marvin.cnpem.br/.

  2. Em Interactive Apps, abra uma VNC.

  3. No formulário da VNC, selecione a partição gui-gpu-small e defina o número de horas, número de GPUs e número de CPUs conforme necessário. Clique em Launch.

  4. Uma nova janela será aberta com a VNC. Aguarde até que a VNC esteja ativa (Running) e clique em Launch VNC.

  5. Uma vez que a VNC estiver ativa, abra um terminal dentro da VNC.

  6. No terminal, execute o seguinte comando para iniciar o Ilastik:

    singularity run --nv /opt/images/ilastik/ilastik-1_4_0.sif
    

Além disso, você também pode executar a CLI do Ilastik diretamente no terminal (sem interface gráfica), utilizando o seguinte comando:

singularity run --nv /opt/images/ilastik/ilastik-1_4_0.sif --headless --project proj.ilp
Os parâmetros utilizados nesse comando são: - `--headless`: Executa o Ilastik em modo CLI (sem interface gráfica). - `--project`: Especifica o caminho para o projeto que será executado (`proj.ilp`).

NP³ MS Workflow - A Pipeline for LC-MS/MS Metabolomics Data Process and Analysis

O NP³ MS Workflow (v1.1.4) é uma coleção de scripts para melhorar agilizar a pesquisa em metabolômica untarget focada em descoberta de drogas com otimizações para produtos naturais.

É um procedimento automatizado para agrupar e quantificar os espectros MS² (MS/MS) associadas ao mesmo íon que foram eluídos em picos cromatográficos (MS1) concorrentes em uma coleção de amostras de experimentos LC-MS/MS.

Os possíveis resultados são:

  • Tabela classificação de espectros candidatos responsáveis por hits observados em experimentos de bioatividade;
  • Quantificação relativa de metabólitos presentes nas amostras;
  • Grafo de redes moleculares para melhorar a análise e visualização dos resultados.

NP³ MS Workflow Pipeline

Tutorial em vídeo

  • Tutorial 1: Brief introduction, 'Getting Started' section and a [M+H]+ analysis

Para entender melhor

Criando arquivo sbatch

Para usar o NP³ MS Workflow no HPC MARVIN, a forma mais eficiente é submentendo um job no seu gerenciador de filas slurm.

Neste job colocamos todos os comandos que devem ser executados em um arquivo de texto simples de extesão .sh.

Cabeçalho

No cabeçalho os principais parametros são:

  • --jobname=<jobname> | Nome do seu job;
  • --ntaks=<numero> | Número tarefas, geralmente 1 é suficiente;
  • --cpus-per-task=<numero> | Número de CPUS que serão usadas, se usar um valor diferente de 1 lembre-se também modificar o parâmetro -l (é a letra éle) em seu run;
  • --partition=<nome_particao> | O NP³ não é otimizado para GPU, então escolha uma das filas de CPU (que geralmente são menos concorridas, então pode ser uma vantagem). As fila de CPU atualmente disponíveis são:
    • debug-cpu | até 30:00 min | Recomendada para testes;
    • gui-cpu | até 12:00:00 horas | Recomendada para sessões VNC no OOD;
    • short-cpu | até 5-00:00:00 dias | Recomendada para maioria dos trabalhos;
    • long-cpu | até 15-00:00:0 dias | Recomendada para processamentos muito demorados.

Exemplo de cabeçalho:

#!/bin/bash
#SBATCH --job-name=NP3_MS_WORKFLOW_your_intuitive_name
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --partition=short-cpu

Corpo

No corpo do arquivo colocamos os comandos que serão executados. Nesse caso, é o comando para executar o np3_ms_workflow instalado dentro de um container do singularity e os parâmetros para execução.

Execução do NP³

Depois de ter enviado seus arquivos MZXML e metadado à sua área do OpenOnDemand, basta construir seu comando de processamento utilizando os endereços completos dos diretórios

Abaixo um exemplo para o run:

  • Da usuário marie.curie;
  • Saída no diretório tmps dentro de sua home;
  • Com metadao em pasta de mzxml em Documentos\NPTest, também dentro da home;
  • Tempos de tolerância de 1s para o mesmo batch e 2s geral;
  • Verbose 10 que significa ligado para registro e ativa o teste de integridade no final (consulte o manual para mais opções).

Note que para quebrar a linha, e ficar mais legível, basta colcoar uma \ logo antes da quebra que o programa interpreta como estivesse tudo na mesma linha

singularity run /opt/images/NP3/ms_workflow/np3_ms_workflow.sif run \
-n NPTrial \
-o /home/marie.curie/tmps/ \
-m /home/marie.curie/Documentos/NPTest/marine_bacteria_lib_metadata.csv \
-d /home/luiz.alves/Documentos/NPTest/mzxml \
-t 1,2 \
-v 10

Arquivo final

Ao final, juntando tudo, temos arquivo como o abaixo que pode ser colocando em um arquivo my_np3_awsome_run.sh e ser enviado ao slurm com o comando

sbatch my_np3_awsome_run.sh

Conteúdo final do my_np3_awsome_run.sh:

#!/bin/bash
#SBATCH --job-name=NP3_MS_WORKFLOW_your_intuitive_name
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --partition=short-cpu
#SBATCH --mem-per-cpu=4G

# Execute a imagem Singularity com o comado NP3
singularity run /opt/images/NP3/ms_workflow/np3_ms_workflow.sif run \
-n NPTrial \
-o /home/marie.curie/tmps/ \
-m /home/marie.curie/Documentos/NPTest/marine_bacteria_lib_metadata.csv \
-d /home/luiz.alves/Documentos/NPTest/mzxml \
-t 1,2 \
-v 10

Usando o Job Composer do Onpen OnDemand (OOD)

O Open OnDemand é uma plataforma permite aos usuários executar aplicativos e jobs em sistemas de cluster remotos. Com o Job Composer, um componente integrado da plataforma Open OnDemand, os usuários podem facilmente criar e enviar jobs para o sistema de gerenciamento de fila. Neste tutorial passo a passo, você terá um exemplo de como usar o Job Composer para criar jobs para executar o NP³ MS_WORKFLOW.

  1. Na interface inicial do OOD, após o login, entre na seção Job Composer dentro da aba jobs para acessar a ferramenta. Menu para entrada no Job Composer

  2. Clique no botão "New Job" na parte superior esquerda da tela para criar uma nova tarefa. Você pode escolher um template padrão ou um pré-criado. Para este exemplo, vamos no "From Default Template". Criando um novo job

  3. A direita da tela, você verá os quadros "Job Details" e "Submit Script" com os detalhes do arquivo padrão. Para modificá-lo e preenchê-lo, clique em "Open Editor" e abra o editor de texto (provavelmente ele virá em uma nova aba). Abrindo o arquivo texto para modificar

  4. Aqui você terá um editor de texto onde poderá escrever os detalhes da sua tarefa. Realize as modificações necessárias e clique em Save no canto superior esquerdo, em seguida feche a aba. Editando o arquivo texto .sh do job

  5. Se você for realizar tarefas semelhantes no futuro, é uma boa ideia criar um template. Para fazer isso, clique no botão "Create Template". Usando o arquivo para gerar um template

    • 5.1. Preencha ou modifique os dados do fomulário e clique em Save Salvando o template criado

    • 5.2 Agora você poderá criar tarefas a partir deste template padrão, realizando apenas as modificações necessárias como visto nos itens 3 e 4. Usando o template para gerar um JOB

  6. Voltando ao Job Composer, agora é escolher e conferir o job criado (fazendo mais alterações se necessário) e clicar no botão verde >Submit. Usando o arquivo para gerar um template

  7. Você pode acompanhar o status do seu job na seção "Active Jobs" na aba "Jobs". Aqui, você pode ver uma lista de todos os jobs ativos e já concluídos. Jobs rodando e rodados

  8. Para ver a saída do terminal durante o processamento do job, clique no botão Open in File Manager. Esta saída estará escrita no arquivo "slurm-xxxx.out". Outputs do slurm

  9. E os arquivos gerados pelo processamento do NP³? Eles estarão na pasta indicada pelo parâmetro "-o" ou "--output_path" no RUN submetido. Outputs do NP3

Sistemas

Atualmente, os seguintes sistemas estão disponíveis para os usuários do LNBio:

  • OMERO: Repositório de imagens biológicas
  • eLab: Caderno eletrônico de laboratório

Para instalar ou atualizar um sistema, você deve registrar um chamado [LNBio] Suporte EDB do Jira em HPCC Marvin: Aplicativos, Programas e Sistemas.

OMERO

Esta seção apresenta o repositório de imagens OMERO do LNBio, que está disponível em https://omero-lnbio.cnpem.br.

O OMERO é um sistema de gerenciamento de imagens científicas desenvolvido pelo Open Microscopy Environment (OME), que é uma plataforma de código aberto amplamente utilizada na comunidade científica para o armazenamento, visualização e compartilhamento de imagens de microscopia.

Para solicitar suporte ou ajuda com o OMERO, registre um chamado na [LNBio] Suporte EDB do Jira em OMERO: Suporte ao usuário.

Acesso pelo navegador Browser Icons

Para acessar o OMERO pelo navegador, abra seu navegador e acesse:

https://omero-lnbio.cnpem.br
Lembre-se que este endereço só funcionará na rede interna do CNPEM. Para acessá-lo de fora do centro, é necessário usar a VPN. Caso não tenha este acesso à VPN, entre em contato com o DTI.

Na tela de login, use seu usuário (sem @lnbio.cnpem.br) e senha institucional.

Se você é a Marie Skłodowska-Curie, seu email é marie.curie@lnbio.cnpem.br. Logo, seu usuário é marie.curie.
OMERO.web @ Edge

Após o login, você verá a interface web do OMERO:

OMERO.web file viewer

Acessando grupos

Após realizar o login, você poderá selecionar o grupo de trabalho no qual deseja navegar.

No canto superior esquerdo da interface, clique no ícone de 👥 (grupos) para listar todos os grupos dos quais você faz parte. Ao passar o mouse sobre um grupo, os usuários pertencentes a ele serão exibidos.

OMERO.web group

Ao clicar sobre um usuário dentro de um grupo, você poderá visualizar, anotar ou editar imagens, dependendo das permissões configuradas para aquele grupo. Por padrão, os grupos permitem apenas visualização.

OMERO.web group

eLab

Esta seção apresenta o caderno eletrônico de laboratório eLab, que está disponível em https://elab.cnpem.br.

O eLab é um caderno eletrônico de laboratório (ELN) de código aberto, amplamente utilizado na comunidade científica para o registro e organização de dados experimentais. Ele permite que os pesquisadores documentem seus experimentos, compartilhem informações e colaborem de forma eficiente.

⚠️ O eLab não está hospedado no HPCC Marvin. Trata-se de um serviço institucional, operado em uma máquina virtual gerenciada pela DTI (Divisão de Tecnologia da Informação) do CNPEM.

Para solicitar suporte ou ajuda com o eLab, registre um chamado na [LNBio] Suporte EDB do Jira em eLab: Suporte ao usuário.

Acesso pelo navegador Browser Icons

Para acessar o eLab pelo navegador, abra seu navegador e acesse:

https://elab.cnpem.br
Lembre-se que este endereço só funcionará na rede interna do CNPEM. Para acessá-lo de fora do centro, é necessário usar a VPN. Caso não tenha este acesso à VPN, entre em contato com o DTI.

Na tela de login, use seu e-mail (p. ex., marie.curie@lnbio.cnpem.br) e senha institucional.

eLab @ Firefox

Suporte ao usuário

O suporte aos usuários do HPCC Marvin é realizado pela [LNBio] Suporte EDB do Jira.

Para solicitar ajuda com problemas técnicos, dúvidas sobre o sistema ou pedidos de recursos adicionais, registre um chamado na opção HPCC Marvin: Suporte ao usuário.

Para instalar ou atualizar um aplicativo ou programa, você deve registrar um chamado na opção HPCC Marvin: Programas e Aplicativos.

Ao abrir um chamado, por favor, forneça sempre informações relevantes, como o nome do usuário (marie.curie), o ID do job, a hora e a data em que ocorreu o problema e quaisquer mensagens de erro que você tenha recebido. Isso ajudará o suporte a identificar e resolver o problema com maior rapidez e eficiência.

Relatórios periódicos de uso do Marvin

Os relatórios periódicos de uso do Marvin são gerados anualmente, incluindo informações sobre o uso do sistema, como número de usuários, tempo de processamento, e tipos de trabalhos executados. Esses relatórios são úteis para entender a utilização do sistema e planejar melhorias.

Os relatórios anuais estão disponíveis no seguinte link: https://cnpem.github.io/marvin-reports/.

Data de PublicaçãoReferente ao Ano
2025-05-132024
2024-01-102023