Skip to content
Snippets Groups Projects
Commit 485f2882 authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 07/02/2024: IO: add LBAK_REDUCE_FLOAT_PRECISION and...

Philippe 07/02/2024: IO: add LBAK_REDUCE_FLOAT_PRECISION and LIO_ALLOW_REDUCED_PRECISION_BACKUP to allow reduced float precision for backups (use with caution)
parent a0abda59
No related branches found
No related tags found
No related merge requests found
...@@ -65,6 +65,8 @@ CHARACTER(LEN=NDIRNAMELGTMAX) :: CIO_DIR = '' ! Directory for IO ...@@ -65,6 +65,8 @@ CHARACTER(LEN=NDIRNAMELGTMAX) :: CIO_DIR = '' ! Directory for IO
LOGICAL :: LIO_ALLOW_NO_BACKUP = .FALSE. ! Allow to have no valid backup time (useful for some tests) LOGICAL :: LIO_ALLOW_NO_BACKUP = .FALSE. ! Allow to have no valid backup time (useful for some tests)
LOGICAL :: LIO_NO_WRITE = .FALSE. ! Disable file writes (useful for benchs) LOGICAL :: LIO_NO_WRITE = .FALSE. ! Disable file writes (useful for benchs)
LOGICAL :: LIO_ALLOW_REDUCED_PRECISION_BACKUP = .FALSE. ! Allow read/write of backup files with a reduced precision
LOGICAL :: LIO_COMPRESS = .FALSE. ! Compress (float) arrays (for netCDF) LOGICAL :: LIO_COMPRESS = .FALSE. ! Compress (float) arrays (for netCDF)
INTEGER :: NIO_COMPRESS_LEVEL = 4 ! Compression level (for netCDF) INTEGER :: NIO_COMPRESS_LEVEL = 4 ! Compression level (for netCDF)
......
...@@ -913,8 +913,8 @@ SUBROUTINE IO_File_add2list( TPFILE, HNAME, HTYPE, HMODE, ...@@ -913,8 +913,8 @@ SUBROUTINE IO_File_add2list( TPFILE, HNAME, HTYPE, HMODE,
USE NETCDF, ONLY: NF90_QUANTIZE_BITGROOM, NF90_QUANTIZE_BITROUND, NF90_QUANTIZE_GRANULARBR USE NETCDF, ONLY: NF90_QUANTIZE_BITGROOM, NF90_QUANTIZE_BITROUND, NF90_QUANTIZE_GRANULARBR
! !
#endif #endif
USE MODD_BAKOUT, ONLY: LBAK_COMPRESS, LOUT_COMPRESS, LOUT_REDUCE_FLOAT_PRECISION, & USE MODD_BAKOUT, ONLY: LBAK_COMPRESS, NBAK_COMPRESS_LEVEL, LBAK_REDUCE_FLOAT_PRECISION, &
NBAK_COMPRESS_LEVEL, NOUT_COMPRESS_LEVEL, & LOUT_COMPRESS, NOUT_COMPRESS_LEVEL, LOUT_REDUCE_FLOAT_PRECISION, &
COUT_COMPRESS_LOSSY_ALGO, LOUT_COMPRESS_LOSSY, NOUT_COMPRESS_LOSSY_NSD COUT_COMPRESS_LOSSY_ALGO, LOUT_COMPRESS_LOSSY, NOUT_COMPRESS_LOSSY_NSD
USE MODD_CONF, ONLY: CPROGRAM USE MODD_CONF, ONLY: CPROGRAM
USE MODD_CONFZ, ONLY: NB_PROCIO_R, NB_PROCIO_W USE MODD_CONFZ, ONLY: NB_PROCIO_R, NB_PROCIO_W
...@@ -1354,6 +1354,22 @@ SELECT CASE(TPFILE%CTYPE) ...@@ -1354,6 +1354,22 @@ SELECT CASE(TPFILE%CTYPE)
END IF END IF
#endif #endif
ELSE IF (TRIM(HTYPE)=='MNHBACKUP' .OR. TRIM(HTYPE)=='MNHDIACHRONIC') THEN ELSE IF (TRIM(HTYPE)=='MNHBACKUP' .OR. TRIM(HTYPE)=='MNHDIACHRONIC') THEN
TPFILE%LNCREDUCE_FLOAT_PRECISION = LBAK_REDUCE_FLOAT_PRECISION(IMI)
IF ( LBAK_REDUCE_FLOAT_PRECISION(IMI) ) THEN
IF ( .NOT. LIO_ALLOW_REDUCED_PRECISION_BACKUP ) THEN
cmnhmsg(1) = 'LBAK_REDUCE_FLOAT_PRECISION=T is dangerous'
cmnhmsg(2) = 'if needed, it must be forced with LIO_ALLOW_REDUCED_PRECISION_BACKUP=T in NAM_CONFIO'
CALL PRINT_MSG( NVERB_ERROR, 'IO', 'IO_File_add2list' )
TPFILE%LNCREDUCE_FLOAT_PRECISION = .FALSE.
ELSE
IF ( .NOT. ASSOCIATED( TPFILE%TMAINFILE ) ) THEN
! Do not print warning for subfiles
CALL PRINT_MSG( NVERB_WARNING, 'IO', 'IO_File_add2list', trim(tpfile%cname) // &
' LBAK_REDUCE_FLOAT_PRECISION=T dangerous (forced by LIO_ALLOW_REDUCED_PRECISION_BACKUP=T)' )
END IF
END IF
END IF
! Apply compression to backup files if not already forced for all ! Apply compression to backup files if not already forced for all
IF ( .NOT. LIO_COMPRESS ) THEN IF ( .NOT. LIO_COMPRESS ) THEN
TPFILE%LNCCOMPRESS = LBAK_COMPRESS(IMI) TPFILE%LNCCOMPRESS = LBAK_COMPRESS(IMI)
......
...@@ -41,7 +41,8 @@ ...@@ -41,7 +41,8 @@
USE MODD_IO, ONLY : LVERB_OUTLST, LVERB_STDOUT, LVERB_ALLPRC, & USE MODD_IO, ONLY : LVERB_OUTLST, LVERB_STDOUT, LVERB_ALLPRC, &
NBUD_VERB, NBUD_ABORT_LEVEL, NIO_VERB, NIO_ABORT_LEVEL, NGEN_VERB, NGEN_ABORT_LEVEL, & NBUD_VERB, NBUD_ABORT_LEVEL, NIO_VERB, NIO_ABORT_LEVEL, NGEN_VERB, NGEN_ABORT_LEVEL, &
LIO_COMPRESS, NIO_COMPRESS_LEVEL, & LIO_COMPRESS, NIO_COMPRESS_LEVEL, &
CIO_DIR, LIO_ALLOW_NO_BACKUP, LIO_NO_WRITE, NFILE_NUM_MAX CIO_DIR, LIO_ALLOW_NO_BACKUP, LIO_NO_WRITE, LIO_ALLOW_REDUCED_PRECISION_BACKUP, &
NFILE_NUM_MAX
! !
IMPLICIT NONE IMPLICIT NONE
! !
...@@ -57,6 +58,7 @@ NAMELIST/NAM_CONFIO/LCDF4, LLFIOUT, LLFIREAD, & ...@@ -57,6 +58,7 @@ NAMELIST/NAM_CONFIO/LCDF4, LLFIOUT, LLFIREAD, &
NGEN_VERB, NGEN_ABORT_LEVEL, CIO_DIR, & NGEN_VERB, NGEN_ABORT_LEVEL, CIO_DIR, &
LIO_COMPRESS, NIO_COMPRESS_LEVEL, & LIO_COMPRESS, NIO_COMPRESS_LEVEL, &
LIO_ALLOW_NO_BACKUP, LIO_NO_WRITE, & LIO_ALLOW_NO_BACKUP, LIO_NO_WRITE, &
LIO_ALLOW_REDUCED_PRECISION_BACKUP, &
NFILE_NUM_MAX NFILE_NUM_MAX
! !
END MODULE MODN_CONFIO END MODULE MODN_CONFIO
......
...@@ -56,8 +56,9 @@ LOGICAL :: LBAK_END = .FALSE. ! Force a backup/output at the last timestep ...@@ -56,8 +56,9 @@ LOGICAL :: LBAK_END = .FALSE. ! Force a backup/output at the last timestep
LOGICAL :: LOUT_END = .FALSE. ! of the segment for all models LOGICAL :: LOUT_END = .FALSE. ! of the segment for all models
! Compression ! Compression
LOGICAL, DIMENSION(JPMODELMAX) :: LOUT_REDUCE_FLOAT_PRECISION = .FALSE.
! Reduce the precision of floats to single precision instead of double precision (for netCDF) LOGICAL, DIMENSION(JPMODELMAX) :: LBAK_REDUCE_FLOAT_PRECISION = .FALSE. ! Reduce the precision of floats to single precision
LOGICAL, DIMENSION(JPMODELMAX) :: LOUT_REDUCE_FLOAT_PRECISION = .FALSE. ! instead of double precision (for netCDF)
LOGICAL, DIMENSION(JPMODELMAX) :: LBAK_COMPRESS = .FALSE. ! Compress (float) arrays (for netCDF) LOGICAL, DIMENSION(JPMODELMAX) :: LBAK_COMPRESS = .FALSE. ! Compress (float) arrays (for netCDF)
LOGICAL, DIMENSION(JPMODELMAX) :: LOUT_COMPRESS = .FALSE. ! Compress (float) arrays (for netCDF) LOGICAL, DIMENSION(JPMODELMAX) :: LOUT_COMPRESS = .FALSE. ! Compress (float) arrays (for netCDF)
INTEGER, DIMENSION(JPMODELMAX) :: NBAK_COMPRESS_LEVEL = 4 ! Compression level (for netCDF) INTEGER, DIMENSION(JPMODELMAX) :: NBAK_COMPRESS_LEVEL = 4 ! Compression level (for netCDF)
......
...@@ -47,7 +47,8 @@ NAMELIST/NAM_BACKUP/LBAK_BEG,LBAK_END,& ...@@ -47,7 +47,8 @@ NAMELIST/NAM_BACKUP/LBAK_BEG,LBAK_END,&
XBAK_TIME,NBAK_STEP,& XBAK_TIME,NBAK_STEP,&
NBAK_STEP_FREQ,NBAK_STEP_FREQ_FIRST,& NBAK_STEP_FREQ,NBAK_STEP_FREQ_FIRST,&
XBAK_TIME_FREQ,XBAK_TIME_FREQ_FIRST,& XBAK_TIME_FREQ,XBAK_TIME_FREQ_FIRST,&
LBAK_COMPRESS, NBAK_COMPRESS_LEVEL,& LBAK_REDUCE_FLOAT_PRECISION, &
LBAK_COMPRESS, NBAK_COMPRESS_LEVEL, &
CBAK_DIR CBAK_DIR
! !
END MODULE MODN_BACKUP END MODULE MODN_BACKUP
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment