ParaView¶
Este guia adapta boas práticas de outros centros HPC para o ambiente local do CS2I, com recomendações para utilização com Slurm, GPUs (EGL) e uso client-server.
1. Visão geral¶
Antes de iniciar, vale alinhar a finalidade: processar e visualizar dados grandes diretamente no cluster, no storage de alto desempenho, com MPI (para paralelizar leitura/filtros) e EGL (para renderizar sem servidor gráfico). Isso minimiza transferência de grandes volumes de dados para sua estação local e melhora a responsividade.
Benefício esperado: menor gargalo de I/O, melhor uso de CPU/GPU e workflows reprodutíveis por script ou client-server.
2. Conceitos e arquitetura¶
Entender a arquitetura evita frustrações com X11 e compatibilidade de versões:
- Client–Server: o client (GUI
paraview) roda no seu desktop; o server (pvserver) roda no nó de computação, onde estão os dados. A conexão ocorre por socket TCP via túnel SSH. Este modelo oferece melhor desempenho que X11 forwarding e é a abordagem recomendada. - EGL (headless GPU): permite renderizar em GPU sem
DISPLAY, ideal para nós de computação. Use--force-offscreen-renderingempvserver/pvbatch. - Batch: tarefas repetitivas ou longas podem ser automatizadas com
pvbatch/pvpython, garantindo reprodutibilidade. - Compatibilidade de versão: o client da sua estação deve corresponder à versão do servidor para evitar erros de protocolo.
3. Pré‑requisitos e recomendações¶
Para evitar o interrompimento do paraview e garantir boa convivência no ambiente:
- Onde executar: nunca rode
paraviewnos nós de login. Lance um allocation (salloc/sbatch/srun) com Slurm e execute no nó alocado. - Paths de trabalho: use
/scratch/projetos/<projeto>e, quando aplicável,/scratch/$USERpara dados e saídas. Reserve~/para scripts leves e arquivos de configurações. - Partições: selecione partição CPU para pós‑processamento sem renderização em GPU e GPU quando desejar aceleração de render.
- Rede/portas: conexões diretas ao nó de computação podem ser bloqueadas. Prefira túnel SSH.
- GUI: baixe localmente (sua estação de trabalho) a mesma versão do ParaView que está rodando no cluster. ParaView Download webpage.
4. Carregando o módulo ParaView¶
Antes de executar, garanta a stack correta (MPI, Python e plugins) usando o módulo oficial.
Por que fazer isso: evitar conflito de bibliotecas com mpi, mesa, qt ou Python do sistema.
Comando:
Validação rápida:
5. Client-Server com pvserver (recomendado)¶
O modelo client-server oferece interatividade eficiente para grandes dados, delegando o processamento intensivo ao cluster.
Fluxo: alocar recursos (Slurm) → iniciar pvserver (nó de computação) → conectar GUI local (túnel SSH).
Alocar recursos (exemplo com 1 GPU e 8 ranks):
Iniciar o servidor (modo offscreen EGL):
module load paraview/5.13.3-egl-mpi-python3.10
# evita oversubscription junto ao MPI
export OMP_NUM_THREADS=1
srun -n 8 pvserver --server-port=11111 --force-offscreen-rendering
Conectar a partir do desktop (túnel SSH):
Utilize o túnel SSH caso a porta do nó de computação não esteja acessível diretamente.
Depois, no client (GUI), crie uma conexão para localhost:11111 em File → Connect….
Dicas adicionais:
- Para múltiplas GPUs, verifique mapeamento com
CUDA_VISIBLE_DEVICESou bindings do MPI. - Se observar erros OpenGL, entre em contato com o suporte.
6. Uso interativo em nó de computação (EGL/headless)¶
Para análises rápidas, sem a GUI remoto, use sessões interativas com scripts direto no nó.
Fluxo: alocar nó → carregar módulo → executar operações EGL/Python headless.
Alocação e verificação:
salloc --partition=gpulongc --nodes=1 --ntasks-per-node=1 --time=02:00:00
module load paraview/5.13.3-egl-mpi-python3.10
pvpython --version
Observação: a GUI paraview não deve ser usada via X11 forwarding; prefira o modelo client-server.
7. Execução em lote com pvbatch/pvpython¶
Execuções em lote dispensam interação manual, facilitando a escalabilidade e reprodutibilidade.
Logica: encapsular operações em Python habilita reprodução, controle de versão e execução distribuída via srun.
Exemplo de script batch (render offscreen com MPI):
#!/bin/bash
#SBATCH --job-name=pvbatch_render
#SBATCH --partition=gpulongc
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=8
#SBATCH --time=01:00:00
#SBATCH --output=logs/%x-%j.out
module load paraview/5.13.3-egl-mpi-python3.10
export OMP_NUM_THREADS=1
srun -n 8 pvbatch /scratch/$USER/scripts/render.py
Script Python mínimo (pipeline básico):
O objetivo é demonstrar leitura, mapeamento de cor e screenshot.
from paraview.simple import *
reader = OpenDataFile('/scratch/$USER/dados/case_001.vti')
view = CreateView('RenderView')
Show(reader, view)
ColorBy(GetDisplayProperties(reader, view=view), ('POINTS', 'pressure'))
ResetCamera(view)
view.ViewSize = [1920, 1080]
SaveScreenshot('/scratch/$USER/saidas/case_001.png', view)
Submeter job:
Dica: gerar um .pvsm pela GUI e reproduzir com pvbatch --state acelera a criação de pipelines complexos.
8. Otimização e boas práticas¶
Para obter throughput consistente, considere:
- I/O local ao compute: leia/escreva em
/scratchpara reduzir latência do FS compartilhado. - Formatos paralelizáveis: prefira HDF5, coleções
.pvd/.vtme time-series particionadas. - Decomposição e filters paralelos: alinhe o número de ranks à decomposição do dataset; evite oversubscription fixando
OMP_NUM_THREADS=1. - LOD e caching: use LOD para navegação interativa; para frames finais, desative LOD. Ajuste cache conforme memória disponível.
- GPU headless: sempre use
--force-offscreen-renderingpara EGL; valide drivers comnvidia-smino contexto do job. - Render progressivo: para animações, salve keyframes em resolução menor durante testes; aumente para produção.
9. FAQ¶
Principais problemas e sugestões rápidas de diagnóstico:
- GUI remota lenta/erros OpenGL: evite X11 forwarding; use client-server. Se persistir erro, teste variante
mesa(quando existir), revise drivers ou contate o suporte. - Conexão recusada: use túnel SSH (
-L); confirme host/porta corretos e políticas de firewall internas. - MPI incompatível: carregue o módulo do ParaView e use
srun(não misturempirunexterno). Verifiquemodule listdentro do job. - Sem GPU visível: confirme com
nvidia-smidentro do allocation. - Memória insuficiente: aumente ranks, reduza resolução, fatie o domínio (tiles/slabs) ou serialize time-steps.
- Problemas persistentes: para suporte técnico, consulte Como solicitar ajuda.
10. Exemplos ilustrativos¶
Estes exemplos servem de ponto de partida; ajuste partição/conta conforme seu projeto e HPC.
10.1. Sessão com 1 GPU e 8 ranks (EGL):
Visa sessões interativas com client-server de alta responsividade.
salloc --partition=gpulongc --nodes=1 --ntasks-per-node=8 --gres=gpu:1 --time=02:00:00
module load paraview/5.13.3-egl-mpi-python3.10
export OMP_NUM_THREADS=1
srun -n 8 pvserver --server-port=11111 --force-offscreen-rendering
10.2. Túnel SSH a partir do desktop:
Encaminha a porta local para o nó de computação alocado.
Depois conecte a localhost:11111 em File → Connect….
10.3. Sessão CPU‑only (16 ranks):
Útil para pipelines sem renderização acelerada por GPU.
salloc --partition=cpulongc --nodes=1 --ntasks-per-node=16 --time=01:00:00
module load paraview/5.13.3-egl-mpi-python3.10
export OMP_NUM_THREADS=1
srun -n 16 pvbatch /scratch/$USER/scripts/postpro.py
10.4. Reproduzir um State em lote:
Facilita levar um pipeline criado na GUI para o modo batch.
11. Conclusão¶
Use o client-server para interatividade e o batch para processamento. Padronize o carregamento do módulo paraview/5.13.3-egl-mpi-python3.10, trabalhe no /scratch, e dimensione o MPI/GPUs conforme a decomposição do seu dataset. Em caso de dúvidas, compartilhe seu sbatch, allocation e logs para diagnóstico rápido pelo time NOC/HPC.