monanadmin / monan

Repositório organizacional das atividades dos macro-grupos do MONAN - Model for Ocean-laNd-Atmosphere PredictioN
14 stars 10 forks source link

[GCC] PAD: Site sanity-check - Figuras #502

Closed joaomas closed 1 month ago

joaomas commented 2 months ago

:people_holding_hands: User Story

COMO Saulo QUEREMOS criar um site PARA visualizar o comportamento da saída do modelo

:clipboard: Critérios de aceite de conclusão da Issue

:pencil: Detalhamento adicional da atividade

:comet: Impactos

(... consequência técnica encontrada durante a execução da issue)

:link: Dependências

(... issues e requisitos que devem ser executados previamente)

:hammer_and_wrench: Solução

  1. Foi criado um repositório para o sanity-check em: https://github.com/monanadmin/sanity_check
  2. Foi editado o novo arquivo com as mudanças para leitura da entrada em um único arquivo e com níveis unificados
  3. Foram feitos testes locais com a saída do modelo completa. Tempos da rodada na máquina local:
    • Leitura do arquivo NetCDF completo: 71 s
    • Processamento das figuras: 5 min/dia
  4. Todos os arquivos foram gerados na máquina local
  5. Foi criado um script de submissão na Egeon:
#!/bin/bash
#SBATCH --job-name=SC
#SBATCH --nodes=01
#SBATCH --partition=batch
#SBATCH --tasks-per-node=1
#SBATCH --ntasks=1
#SBATCH --time=00:30:00
#sbatch --mem-per-cpu=64000M
#SBATCH --output=SC.txt
#SBATCH --exclusive

cd $SLURM_SUBMIT_DIR
echo $SLURM_SUBMIT_DIR
#module swap gnu9 intel
#module swap openmpi4 impi
#module load phdf5
#module load netcdf
#module load netcdf-fortran
#module load hwloc
echo "Lista de módulos carregados: "
module list
echo "========"

#export TMPDIR=/mnt/beegfs/luiz.rodrigues/bin/tmp

ulimit -s unlimited
MPI_PARAMS="-iface ib0 -bind-to core -map-by core"
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export I_MPI_DEBUG=5

python /home/luiz.rodrigues/sanity_check/src/gera_figs.py --outdir /mnt/beegfs/luiz.rodrigues/figures/ >& SC.log
  1. O job foi submetido com sbatch
  2. O job rodou até o fim sem intercorrências: Tempos:
    • Leitura do arquivo: 102 seg
    • Geração das figuras: 834 seg (5 dias) ~14 min
  3. Saída exemplo:

Image

  1. Como os nós de processamento não enxergam o /pesq foi adotada a estratégia de escrever em um diretório temporário e então mover as figuras para a área de html
  2. Foi criado um script em bash para disparar a submissão do job e esperar seu término. Ao final ele copia as figuras
#!/bin/bash
sbatch subpy.bash

arquivo="SC.log"

# Loop to check if subpy ended
while true; do
    # read the log
    ultima_linha=$(tail -n 1 "$arquivo")
    if [[ $ultima_linha == *"### Figures generated ###"* ]]; then
        echo "Ended."
        break
    fi
    sleep 1
done
data_atual=$(date +"%Y%m%d")
input="/mnt/beegfs/monan/scripts_CD-CT/dataout/${data_atual}00/figures/*"
output="/pesq/share/monan/testes_continuos_CD-CT/html/"
mv $input $output
  1. A modificação foi testada e funcionou conforme o previsto.

  2. Tudo está no site e atualizado nas branch main e develop

  3. :rotating_light: Problemas encontrados

Com a submissão direta nas filas da Egeon apareceu um problema. Os nós de processamento não enxergam a área de /pesq. Há duas soluções possíveis:

a) Fazer com que os nós enxerguem /pesq b) escrever em outra área e mover para /pesq (adotada no teste)

Conforme mostrado no item 10 acima adotou-se a opção b.

:white_check_mark: Conclusão

(... texto que sintetiza a finalização da issue, destacando aspectos positivos e negativos)

:spiral_calendar: Trabalhos Futuros

(... caso a issue demande trabalhos futuros detalhar aqui e marcar o campo "Future Work" ao lado para "Sim")

joaomas commented 1 month ago

@luflarois local definitivo do CD-CT:

/pesq/share/monan/testes_continuos_CD-CT/html/

/mnt/beegfs/monan/scripts_CD-CT/dataout/

http://dataserver.cptec.inpe.br/dataserver_dimnt/monan/testes_continuos_CD-CT/