Closed cfbastarz closed 1 year ago
Foram utilizandos os seguintes módulos da máquina EGEON para a compilação com o GNU (seguindo as orientações dadas pelos Denis):
Currently Loaded Modules:
1) gnu9/9.4.0 3) openmpi4/4.1.1 5) netcdf-fortran/4.5.3 7) hwloc/2.5.0
2) ucx/1.11.2 4) netcdf/4.7.4 6) phdf5/1.10.8 8) libfabric/1.13.0
Aparentemente, a máquina não possui o alias ftn
para o compilador em uso. Os arquivos Makefile do oensMB09, definem o nome do compilador como ftn
. Foram alterados os arquivos Makefile a seguir para a utilização do alias mpif90
:
oensMB09/config/Makefile.conf.gnu
;oensMB09/produtos/libs/w3lib-1.4/Makefile.gnu_cray
;oensMB09/produtos/ensmed/source/Makefile.gnu
;oensMB09/produtos/spread/source/Makefile.gnu
;oensMB09/produtos/probagr/source/Makefile.gnu
;oensMB09/produtos/probability/source/Makefile.gnu
;oensMB09/produtos/plumes/source/Makefile.gnu
;oensMB09/produtos/cluster/source/Makefile.gnu
.Para não quebrar a compatibilidade desses arquivos Makefile com as máquinas Cray XE6 e o Cray XC50, serão desenvolvidos Makefiles extras para uso com a máquina EGEON.
Foi testado o script config_spcon.sh
para a compilação das etapas do método de perturbação e dos produtos (incluindo a w3lib). O script foi modificado para indentificar o host em que está sendo executado e fazer as alterações necessárias nos arquivos config/Makefile.conf.[cray,pgi,gnu]
, pois na máquina EGEON é utilizado o alias mpif90
ao invés do ftn
. Estas alterações estão no commit 2c513b052e2922cf155d122972b7f1002e653ebf.
A princípio não foi necessário realizar nenhum alteração nos códigos fonte para a compilação. Foram apenas alterados o alias do compilador (de ftn
para mpif90
) e ajustados os scripts e arquivos Makefiles que realizam a compilação.
Até a data de escrita desta atualização da tarefa, não há instruções oficiais de compilação do modelo BAM na Egeon. O modelo utilizado para os testes com o método de perturbação MB09, é o BAM_V1.2.1 (o que equivale à release SPCON_V2.1.0). A compilação e a execução do modelo são necessárias pois fazem parte do método de perturbação. Ficam aqui registrados os procedimentos provisórios para a compilação do modelo BAM_V1.2.1 na Egeon com o GNU (pre e pos compilado com o GNU 9.4.0 e o model compilado com o GNU 4.8.5 a partir de um container com essa versão do compilador GNU - arquivo /mnt/beegfs/carlos.bastarz/containers/ubuntu_remix_latest-gcc_4.8.5.sif
).
Para a compilação do pre, model e pos, foi aproveitado o arquivo Makefile.linux_gnu
, com a seguinte modificação:
FC = mpif90
O compilador utilizado é o mpif90
porque o wrapper do ftn
não existe na máquina. Este arquivo com a modificação, foi renomeado para Makefile.linux_gnu_egeon
para o pre e o pos. Para o model, foi removida a opção -static
para a compilação, além de adicionar a opção -ffree-line-length-none
.
Para compilar o pre, é necessário compilar a libbacio
. Para isso, foi necessário modificar o script makebacio_cray_gnu.sh
, incluindo as instruções a seguir:
gnu)
export FCMP=${1:-mpif90}
export CCMP=${2:-cc}
flagOpt="-O0"
flag64bit=""
Este script foi renomeado para makebacio_cray_gnu-carlos.sh
e foi utilizado para a compilação. É importante notar que este script não é utilizado pelo arquivo Makefile.linux_gnu_egeon
e que a compilação do pre, deve ser feita sem a opção clean
, como em:
make linux_gnu_egeon
Currently Loaded Modules:
1) gnu9/9.4.0 3) openmpi4/4.1.1 5) netcdf-fortran/4.5.3 7) hwloc/2.5.0
2) ucx/1.11.2 4) netcdf/4.7.4 6) phdf5/1.10.8 8) libfabric/1.13.0
Basta compilar normalmente com o comando:
make clean linux_gnu_egeon
O model foi compilado com uma versão mais antiga do GNU na EGEON e foi utilizado o container ubuntu_remix_latest-gcc_4.8.5.sif
. Isso foi feito porque com a versão do GNU (9.4.0) da EGEON, a compilação apresenta problemas e para apenas testar o método de perturbação do oensMB09, foi suficiente aproximar o ambiente de compilação utilizado na Tupã (o qual é fornecido pelo container, GNU 4.8.5).
Para compilar:
module load singularity
singularity shell -e --bind /mnt/beegfs/carlos.bastarz:/mnt/beegfs/carlos.bastarz ubuntu_remix_latest-gcc_4.8.5.sif
cd BAM_V1.2.1/model/source
make clean linux_gnu_egeon
Com a compilação do pre, model e pos, para a realização desses processos, foi necessário adaptar os scripts de submissão para as diretivas do SLURM. Para o pre, foi necessário adptar o script runPre
e com isso, foi possível gerar todas as condições iniciais e de contorno do modelo. O model, entretanto, apresentou algumas dificuldades. Como a compilação foi feita a partir do container, então a sua execução também precisa ser feita a partir do container. Foi modificado o comando de execução do modelo para utilizar o singularity, mas a Egeon ainda não está completamente configurada (informação do Luiz Flávio). Foi enviado um email para o Diego para verificar isso.
O script runPre
do modelo BAM cria scripts de submissão para cada processo a ser realizado na máquina. Um exemplo da comparação entre o mesmo script (serial) com diretivas PBSPro (comentadas) e Slurm:
#!/bin/bash
#SBATCH --output=/mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/Out.MPI1_VarTopo
#SBATCH --error=/mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/Err.MPI1_VarTopo
#SBATCH --time=00:30:00
#SBATCH --tasks-per-node=1
#SBATCH --nodes=1
#SBATCH --job-name=VarTop
#SBATCH --partition=batch
####!/bin/bash
####PBS -o headnode.egeon.cptec.inpe.br:/mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/Out.MPI1_VarTopo
####PBS -j oe
####PBS -l walltime=00:30:00
####PBS -A CPTEC
####PBS -l mppwidth=1
####PBS -l mppnppn=1
####PBS -V
####PBS -S /bin/bash
####PBS -N VarTop
####PBS -q pesq.q
auxvarname=VarTopo
# EGEON GNU
module purge
module load gnu9/9.4.0
module load ucx/1.11.2
module load openmpi4/4.1.1
module load netcdf/4.7.4
module load netcdf-fortran/4.5.3
module load phdf5/1.10.8
module load hwloc
module load libfabric/1.13.0
if [[ (${auxvarname} = "Chopping_parallel") ]]
then
# . /opt/modules/default/etc/modules.sh
# module load stat
# module list
export PBS_SERVER=headnode
else
export PBS_SERVER=headnode
fi
if [[ (Linux = "Linux") || (Linux = "linux") ]]
then
export F_UFMTENDIAN=10,20,30,40
fi
export KMP_STACKSIZE=128m
if [[ (${auxvarname} = "FLUXCO2Clima") ]]
then
ulimit -s 65532
else
ulimit -s unlimited
fi
cd /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec
date
optserver=hea
if [[ (${optserver} = "aux") ]]
then
/mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo -i /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo.nml
else
# time aprun -n 1 -N 1 /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo -i /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo.nml
time mpirun -n 1 -N 1 /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo -i /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/VarTopo.nml
fi
date
echo "" > /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/pre/exec/.VarTopo.ok
Com essas alterações foi possível realizar o pre. Ainda é necessário adaptar os scripts runModel
, runPos
e todos os demais scripts do método de perturbação e produdos do SPCON.
Adicionado o código do modelo BAM V1.2.1 para teste do oensMB09 na Egeon: https://github.com/GAD-DIMNT-CPTEC/cfbastarz/tree/main/BAM_V1.2.1
/mnt/beegfs/carlos.bastarz/containers/xc50_dev.sif
Foram adicionados dois arquivos de definição do singularity para construir um container com o modelo compilado. Estes arquivos (BAM_V1.2.0.def
e BAM_V1.2.1.def
) foram adicionados ao repositório https://github.com/GAD-DIMNT-CPTEC/Containers.
Embora estes dois containers sejam compilados com sucesso na Egeon, ainda não foi possível executar o modelo, sendo que o seguinte erro é persistente:
Comando dentro do script de submissão:
singularity exec -e --bind /mnt/beegfs/carlos.bastarz:/mnt/beegfs/carlos.bastarz /mnt/beegfs/carlos.bastarz/containers/BAM_V1.2.0.sif mpirun -np 24 /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/exec_SMT2020021700/ParModel_MPI > /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/exec_SMT2020021700/setout/Print.model.2020021700.2020021900.1656361768.MPI24.out 2>&1
Resultado:
more Print.model.2020021700.2020021900.1656361768.MPI24.out
**(CreateParallelism)** Process 0 (n10) among 24 processes with 1 threads is alive
**(InitVerSizes)** Model sigma levels
k si(k) ci(k) sl(k) cl(k) del(k) delcl(k)
1 1.00000000 0.00000000 NaN NaN 0.00000000 NaN
2 1.00000000 0.00000000 NaN NaN ********** NaN
3 ********** ********** NaN NaN ********** NaN
4 1.00000000 0.00000000 NaN NaN ********** NaN
5 ********** ********** NaN NaN ********** NaN
6 ********** ********** NaN NaN ********** NaN
7 1.00000000 0.00000000 NaN NaN ********** NaN
8 ********** ********** NaN NaN ********** NaN
9 ********** ********** NaN NaN ********** NaN
10 ********** ********** NaN NaN -.00005155 NaN
11 ********** ********** NaN NaN -.00000000 NaN
12 ********** ********** NaN NaN ********** NaN
13 ********** ********** NaN NaN ********** NaN
14 ********** ********** NaN NaN ********** NaN
15 ********** ********** NaN NaN -.00000000 NaN
16 ********** ********** NaN NaN ********** NaN
17 ********** ********** NaN NaN ********** NaN
18 1.00000000 0.00000000 ********** ********** ********** **********
19 ********** ********** ********** ********** ********** 0.00000000
20 ********** ********** ********** ********** ********** NaN
21 ********** ********** NaN NaN 0.00000000 NaN
22 ********** ********** NaN NaN ********** NaN
23 ********** ********** NaN NaN ********** NaN
24 ********** ********** NaN NaN ********** NaN
25 ********** ********** NaN NaN -.04095195 NaN
26 ********** ********** NaN NaN 0.04095195 NaN
27 ********** ********** NaN NaN -.00000000 NaN
28 ********** ********** ********** ********** 0.00000000
29 0.00000000 1.00000000
**(setsst)*********************************************************
**(setsst)*** NMSST changed from weekly running mean (sstwkl) to *
**(setsst)*** climatology (sstaoi), since sstwkl are unavailable *
**(setsst)*** for the last 15 days *
**(setsst)*********************************************************
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 7
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 0
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 2
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 5
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 16
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 17
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 18
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 21
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 22
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 6
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 20
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 11
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 8
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 9
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 12
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 19
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 3
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 1
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 10
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 13
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 14
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 15
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 23
**(ERROR)****(setsst)** file /mnt/beegfs/carlos.bastarz/BAM_V1.2.1/model/datain/SSTWeekly********.G00192 does not exist
application called MPI_Abort(MPI_COMM_WORLD, -1) - process 4
Adicionando a opção -fconvert='big-endian
ao arquivo Makefile.linux_gnu_egeon
do model do BAM_V1.2.1 para a compilação com o singularity na Egeon, revolve o problema reportado na última atualização dessa issue. Para os arquivos de definição dos containers BAM_V1.2.0.def e BAM_V1.2.1.def, deverá ser consertado o referido arquivo Makefile.
A atualização dos scripts do PBS para o SLURM, como já foram registrado, é simples e não requereu muitas modificações. Para as submissões que utilizam array, foram feitas as seguintes modificações (exemplo):
#PBS -o ${DK_suite}/deceof/output/setdeceof${2}${RESOL}${LABELI}.${MAQUI}.${RUNTM}.out
#PBS -e ${DK_suite}/deceof/output/setdeceof${2}${RESOL}${LABELI}.${MAQUI}.${RUNTM}.err
#PBS -l walltime=0:15:00
#PBS -l mppnppn=1
#PBS -A CPTEC
#PBS -V
#PBS -S /bin/bash
#PBS -J 1-${NUMPERT}
#PBS -N DECEOF
#PBS -q ${AUX_QUEUE}
para
#SBATCH --output=${DK_suite}/deceof/output/setdeceof${2}${RESOL}${LABELI}.${MAQUI}.${RUNTM}.out
#SBATCH --error=${DK_suite}/deceof/output/setdeceof${2}${RESOL}${LABELI}.${MAQUI}.${RUNTM}.err
#SBATCH --time=${AUX_WALLTIME}
#SBATCH --tasks-per-node=1
#SBATCH --nodes=1
#SBATCH --job-name=DECEOF
#SBATCH --partition=${AUX_QUEUE}
#SBATCH --array=1-${NUMPERT}
Os trechos de código que utilizam a variável de ambiente PBS_ARRAY_INDEX
foram atualizadas para utilizar a variável equivalente do SLURM, SLURM_ARRAY_TASK_ID
. Exemplo de utilização destas variáveis para a atribuição do número do membro do conjunto de acordo com o índice do array:
export NUM=\$(printf %02g \${PBS_ARRAY_INDEX})
para
export NUM=\$(printf %02g \${SLURM_ARRAY_TASK_ID})
E a execução:
aprun -n ${MPPWIDTH} -N ${MPPNPPN} -d ${MPPDEPTH} -ss \${EXECFILEPATH}/ParModel_MPI < \${EXECFILEPATH}/MODELIN > \${EXECFILEPATH}/setout/Print.model.${LABELI}.MPI${MPPWIDTH}.log
para
singularity exec -e --bind /mnt/beegfs/carlos.bastarz:/mnt/beegfs/carlos.bastarz /mnt/beegfs/carlos.bastarz/containers/egeon_dev.sif mpirun -np ${MPPWIDTH} \${EXECFILEPATH}/ParModel_MPI < \${EXECFILEPATH}/MODELIN > \${EXECFILEPATH}/setout/Print.model.${LABELI}.MPI${MPPWIDTH}.log
Com a atualização dos scripts para o SLURM, foi possível testar também a submissão dos processos do método de perturbação, incluindo o modelo BAM_V1.2.1. Todas as submissões estão sendo feitas utilizando um container singularity com o GCC 4.8.5 e o mpich 3.3 (compilado dentro do container). Os códigos do modelo e do método de perturbação foram compilados e foram testados utilizando o container.
Para submeter um processo utilizando um script SLURM e o container, em um processo serial:
singularity exec -e --bind /mnt/beegfs/carlos.bastarz:/mnt/beegfs/carlos.bastarz /mnt/beegfs/carlos.bastarz/containers/egeon_dev.sif mpirun -np 1 \${HOME_suite}/deceof/bin/\${TRUNC}\${LEV}/deceof.\${TRUNC}\${LEV} < \${HOME_suite}/deceof/datain/deceof\${NUM}.nml > \${HOME_suite}/deceof/output/deceof.\${NUM}.${LABELI}.\${HOUR}.\${TRUNC}\${LEV}
Ainda é necessário ajustar algumas variáveis de ambiente para a execução do modelo, mas, a princípio, tudo está funcionando.
Após a execução do pós-processamento do BAM_V1.2.1 na Egeon (a partir do container), notou-se que alguns arquivos .ctl
não foram gerados corretamente:
(base) [/mnt/beegfs/carlos.bastarz/oensMB09/pos/dataout/TQ0126L028/2020021700/NMC]
carlos.bastarz@headnode 15:54 $ more GPOSNMC20200217002020030100P.fct.TQ0126L028.ctl
E AT 2-M FROM SURFACE (K )
Q02M 0 199, 1, 0 ** sfc SPECIFIC HUMIDITY AT 2-M FROM SURFACE (KG/KG )
U10M 0 130, 105, 10 ** sfc10m 10 METRE U-WIND COMPONENT (M/S )
V10M 0 131, 105, 10 ** sfc10m 10 METRE V-WIND COMPONENT (M/S )
STTM 0 251, 1, 0 ** sfc TIME MEAN SURFACE TEMPERATURE (K )
PREC 0 61, 1, 0 ** sfc TOTAL PRECIPITATION (KG/M2/DAY )
PRCV 0 63, 1, 0 ** sfc CONVECTIVE PRECIPITATION (KG/M2/DAY )
CSSF 0 122, 1, 0 ** sfc SENSIBLE HEAT FLUX FROM SURFACE (W/M2 )
CLSF 0 121, 1, 0 ** sfc LATENT HEAT FLUX FROM SURFACE (W/M2 )
USST 0 193, 1, 0 ** sfc SURFACE ZONAL WIND STRESS (PA )
VSST 0 195, 1, 0 ** sfc SURFACE MERIDIONAL WIND STRESS (PA )
CBNV 0 71, 3, 0 ** cltlay CLOUD COVER (0-1 )
OLIS 0 207, 1, 0 ** sfc DOWNWARD LONG WAVE AT BOTTOM (W/M2 )
OLES 0 211, 1, 0 ** sfc UPWARD LONG WAVE AT BOTTOM (W/M2 )
ROLE 0 114, 8, 0 ** toa OUTGOING LONG WAVE AT TOP (W/M2 )
OCIS 0 209, 1, 0 ** sfc DOWNWARD SHORT WAVE AT GROUND (W/M2 )
OCES 0 212, 1, 0 ** sfc UPWARD SHORT WAVE AT GROUND (W/M2 )
ROCE 0 214, 8, 0 ** toa UPWARD SHORT WAVE AT TOP (W/M2 )
OCAS 0 111, 1, 0 ** sfc SHORT WAVE ABSORBED AT GROUND (W/M2 )
TGSC 0 191, 1, 0 ** sfc GROUND/SURFACE COVER TEMPERATURE (K )
w010 0 167, 105, 10 ** sfc10m SPEED WIND AT 10-M FROM SURFACE (M/S )
TOZN 0 10, 1, 0 ** sfc VERTICALLY INTEGRATED OZONE CONTENT (DOBSON )
CAPE 0 140, 200, 0 ** atm CONVECTIVE AVAIL. POT.ENERGY (M2/S2 )
CINE 0 141, 200, 0 ** atm CONVECTIVE INHIB. ENERGY (M2/S2 )
SWET 0 154, 1, 0 ** sfc SEVERE WEATHER THREAT ( )
w050 0 168, 105, 50 ** sfc50m SPEED WIND AT 50-M FROM SURFACE LAYER (M/S )
w100 0 169, 105, 100 ** sfc100mSPEED WIND AT 100-M FROM SURFACE LAYER (M/S )
d010 0 170, 105, 10 ** sfc10m DIR WIND AT 10-M FROM SURFACE LAYER (DEGREES )
d050 0 171, 105, 50 ** sfc50m DIR WIND AT 50-M FROM SURFACE LAYER (DEGREES )
d100 0 172, 105, 100 ** sfc100mDIR WIND AT 100-M FROM SURFACE LAYER (DEGREES )
endvars
Aparentemente, o problema ocorre de forma aleatória e deverá ser tratado em uma issue separada.
Há um problema com o pós-processamento, em que muitos arquivos CTL são partialmente escritos. Apesar disso, os arquivos GRIB estão corretos, pois utilizando o script grib2ctl.pl
, os arquivos CTL são escritos corretamente. Será necessário invertigar se isso é devido à compilação do código dentro do container ou não, o que poderá ser verificado utilizando-se o executável compilado nativamente na Egeon.
Realizando a compilação do código do pós-processamento com o GNU na Egeon, o problema com a geração dos arquivos CTL persiste.
Compilando o código do pós-processamento com o compilador Intel na máquina Egeon, resolveu o problema com a criação dos arquivos CTL. Aparentemente, o problema está com o compilador GNU na máquina. Para compilar o código, foi utilizado o arquivo Makefile que o @JAAravequia criou para testar a suíte de assimilação de dados na máquina (https://projetos.cptec.inpe.br/projects/bam/repository/entry/tag/BAM_V2.2.1/pos/source/makefiles/Makefile.intel_egeon). Porém, foi necessário fazer os seguintes ajustes para a minha situação (específico):
Arquivo w3lib-1.4/Makefile.common
:
Alterar a linha a seguir (conforme reportado pelo @JAAravequia):
$(AR) $(ARFLAGS) -ruv $(LIB) $(OBJ_MOD) $(OBJS) $(OBJS_CC)
Para:
$(AR) $(ARFLAGS) $(LIB) $(OBJ_MOD) $(OBJS) $(OBJS_CC)
As opções -ruv
devem estar dentro do arquivo Makefile.intel_egeon
.
Arquivo Makefile.intel_egeon
:
Alterar as linhas a seguir:
ARFLAGS =
...
CC=icc
Para:
ARFLAGS = -ruv
...
CC=icc -no-multibyte-chars
Adicionalmente, foi incluída a opção -no-multibyte-chars
ao icc
para eliminar a mensagem de erro Catastrophic error: could not set locale "" to allow processing of multibyte characters
. A referência para a inclusão desta opção é https://www.cdslab.org/paramonte/notes/troubleshooting/catastrophic-error-could-not-set-locale/
Fechando esta issue.
Nesta tarefa, será realizado um primeiro teste para a compilação e uso do método de perturbação oensMB09 na máquina EGEON.
Serão realizadas as seguintes etapas:
config_spcon.sh
;