Conjunto de scripts para auxiliar no pré-processamento, execução e pós-processamento de NEWAVE / DECOMP / DESSEM em ambiente HPC, também executando programas auxiliares quando necessário.
A versão atual do hpc-model-utils
contém scripts para executar os programas NEWAVE e DECOMP em ambiente gerenciado com Sun Grid Engine (SGE) e o modelo DESSEM em ambiente livre, sem gerenciador de filas.
Apesar de ser um módulo python
, o hpc-model-utils não está disponível nos repositórios oficiais. Para realizar a instalação, é necessário fazer o download do código a partir do repositório e fazer a instalação manualmente:
$ git clone https://github.com/marianasnoel/hpc-model-utils
$ cd hpc-model-utils
$ pip install -r requirements.txt
Uma das funcionalidades fornecidas pelo hpc-model-utils
é a compressão de arquivos em paralelo para o formato .zip
. Não existe de maneira fácil um programa de linux que realize paralelismo na compressão de arquivos da maneira que é desejada para acelerar a compressão das saídas dos modelos de planejamento energético, onde existem muitos arquivos de tamanho reduzido e poucos arquivos grandes.
Algumas alternativas de compressão como o pigz e pbzip2 não são as mais adequadas para o processo, visto que elas realizam paralelismo na compressão de um mesmo arquivo, o que é ineficiente na maioria das vezes e ainda seria lento no caso em questão. Mais sobre a infeciência de paralelizar a compressão de arquivos é encontrado aqui.
Por isso, foi extraída deste repositório aberto uma classe Python para paralelizar a compressão de diversos arquivos. Esta classe foi adaptada para que fosse fornecida uma lista de arquivos e, a partir de um pool
de processadores que funcionam de maneira assíncrona, fosse escrito em um mesmo arquivo .zip
o resultado da compressão de cada arquivo da lista, feita de maneira independente por cada processador. Isto se mostrou essencial para lidar com o número de arquivos de saída do modelo NEWAVE individualizado.
O modelo NEWAVE é executado pelo jobs/mpi_newave.job
, que permite declarar tanto o número de cores alocados para a sua execução quanto a versão do modelo a ser utilizada. Uma chamada simples é:
qsub -cwd -V -N $CASO -pe orte $NUM_PROC mpi_newave.job $VERSAO $NUM_PROC
São suportados argumentos opcionais que podem ser fornecidos através das palavras-chave sintetizador
e posproc
, que são encaminhados para as respectivas etapas durante a execução do job.
Todos os argumentos passados após a palavra sintetizador
são redirecionados para a chamada do sintetizador-newave, que é feita após a execução dos programas auxiliares NWLISTCF e NWLISTOP. Já os argumentos passados após a palavra posproc
são redirecionados para o script pos_processa_newave.py
, que é responsável pela divisão e compactação dos arquivos.
O modelo DECOMP é executado pelo jobs/mpi_decomp.job
, que permite declarar tanto o número de cores alocados para a sua execução quanto a versão do modelo a ser utilizada. Uma chamada simples é:
qsub -cwd -V -N $CASO -pe orte $NUM_PROC mpi_decomp.job $VERSAO $NUM_PROC
A execução do modelo através deste job script também realiza a chamada ao sintetizador-decomp.
O modelo DESSEM é executado pelo jobs/dessem.sh
, que permite declarar apenas a versão do modelo a ser utilizada. Este script não suporta ambientes de gerenciamento de filas, pois não é o modo atual de uso internamente. Uma chamada simples é:
./dessem.sh $VERSAO
A execução do modelo através deste job script também realiza a chamada ao sintetizador-dessem.