Hi DiscussCESM,
I've ported CESM2_1_3 to Shaheen II, which is a Cray XC40 at King Abdullah University of Science and Technology. The port to Shaheen is intended to enable the Data Assimilation Research Section to run 1000-member CAM ensembles to test data assimilation algorithms.
The port has passed the regression tests and the UFCAM and POP ensemble consistency tests. I believe it hasn't hasn't passed the regular CAM ECT because there weren't the necessary files available for comparison.
Since we are running such large ensembles with DART, I am trying to get a small, three member ensemble to run with pnetCDF to improve performance but can't seem to get past the runtime error, "NetCDF: Attempt to use feature that was not turned on when netCDF was built."
When building CESM, I followed @jedwards instructions on this previous DiscussCESM thread, "You should build and install netcdf and pnetcdf separately and link both."
netcdf and pnetcdf are built on Shaheen with the intel compiler and this is the same compiler we are using for CESM.
I tried to get pnetcdf to link following the IO Through Data Models section in the CIME documentation, but the instructions seem incomplete, and I suspect interpreted them incorrectly. For example, it says to, "make sure the Macros.make variables PNETCDF_PATH, INC_PNETCDF, and LIB_PNETCDF "
So, wIthin config_compilers.xml, I attempted to set INC_PNETCDF and LIB_PNETCDF with paths to the pnetcdf include and lib directories, respectively, but got an error, "Schemas validity error : Element 'INC_PNETCDF': This element is not expected."
So I commented those key/values out and just set NETCDF and PNETCDF respectively within config_compilers.xml.
At the end of the cesm.bldlog (attached) it appears that only PNETCDF gets linked:
ftn -o /lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/cesm.exe cime_comp_mod.o cime_driver.o component_mod.o component_type_mod.o cplcomp_exchange_mod.o map_glc2lnd_mod.o map_lnd2glc_mod.o map_lnd2rof_irrig_mod.o mrg_mod.o prep_aoflux_mod.o prep_atm_mod.o prep_glc_mod.o prep_ice_mod.o prep_lnd_mod.o prep_ocn_mod.o prep_rof_mod.o prep_wav_mod.o seq_diag_mct.o seq_domain_mct.o seq_flux_mct.o seq_frac_mct.o seq_hist_mod.o seq_io_mod.o seq_map_mod.o seq_map_type_mod.o seq_rest_mod.o t_driver_timers_mod.o -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -latm -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -lice - L../../intel/mpt/debug/nothreads/mct/noesmf/lib/ -lclm -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -locn -L/lustre/scratch/x_johnsobk/FHIST_BGC. f09_d025.075.e03/bld/lib/ -lrof -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -lglc -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/ lib/ -lwav -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -lesp -L../../intel/mpt/debug/nothreads/mct/noesmf/c3a1l1i1o1r1g1w1e1/lib -lcsm_share - L../../intel/mpt/debug/nothreads/lib -lpio -lgptl -lmct -lmpeu -mkl=cluster -L/opt/cray/pe/parallel-netcdf/1.11.1.1/INTEL/19.0/lib -lpnetcdf -mkl
This produces a runtime error. The cesm.log says:
1: Rank 1 [Tue Oct 27 21:25:24 2020] [c9-3c0s2n2] application called MPI_Abort(MPI_COMM_WORLD, 1) - process 1
353: pio_support::pio_die:: myrank= -1 : ERROR: ionf_mod.F90: 235 :
353: NetCDF: Attempt to use feature that was not turned on when netCDF was built.
Is this caused by the fact that netcdf is not linked? Here is the relevant output of nc-config --all and the full output is attached as "nc-config.txt":
This netCDF 4.6.3 has been built with the following features:
. . .
--has-pnetcdf -> no
--has-szlib -> no
--has-cdf5 -> yes
--has-parallel4 -> no
--has-parallel -> no
. . .
My next attempt is to try to append the netcdf link using the SLIBS tag in config_compilers.xml:
<SLIBS>
<append>-L$(NETCDF_PATH_KAUST) -lnetcdff</append>
</SLIBS>
Here are some relevant xmlquery settings from the case:
./xmlquery MPILIB
MPILIB: mpt
./xmlquery PIO_TYPENAME
PIO_TYPENAME: ['CPL:pnetcdf', 'ATM:pnetcdf', 'LND:pnetcdf', 'ICE:pnetcdf', 'OCN:pnetcdf', 'ROF:pnetcdf', 'GLC:pnetcdf', 'WAV:pnetcdf', 'ESP:pnetcdf']
Any advice would be greatly appreciated.
Thank you,
Ben Johnson / johnsonb
I've ported CESM2_1_3 to Shaheen II, which is a Cray XC40 at King Abdullah University of Science and Technology. The port to Shaheen is intended to enable the Data Assimilation Research Section to run 1000-member CAM ensembles to test data assimilation algorithms.
The port has passed the regression tests and the UFCAM and POP ensemble consistency tests. I believe it hasn't hasn't passed the regular CAM ECT because there weren't the necessary files available for comparison.
Since we are running such large ensembles with DART, I am trying to get a small, three member ensemble to run with pnetCDF to improve performance but can't seem to get past the runtime error, "NetCDF: Attempt to use feature that was not turned on when netCDF was built."
When building CESM, I followed @jedwards instructions on this previous DiscussCESM thread, "You should build and install netcdf and pnetcdf separately and link both."
netcdf and pnetcdf are built on Shaheen with the intel compiler and this is the same compiler we are using for CESM.
I tried to get pnetcdf to link following the IO Through Data Models section in the CIME documentation, but the instructions seem incomplete, and I suspect interpreted them incorrectly. For example, it says to, "make sure the Macros.make variables PNETCDF_PATH, INC_PNETCDF, and LIB_PNETCDF "
So, wIthin config_compilers.xml, I attempted to set INC_PNETCDF and LIB_PNETCDF with paths to the pnetcdf include and lib directories, respectively, but got an error, "Schemas validity error : Element 'INC_PNETCDF': This element is not expected."
So I commented those key/values out and just set NETCDF and PNETCDF respectively within config_compilers.xml.
At the end of the cesm.bldlog (attached) it appears that only PNETCDF gets linked:
ftn -o /lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/cesm.exe cime_comp_mod.o cime_driver.o component_mod.o component_type_mod.o cplcomp_exchange_mod.o map_glc2lnd_mod.o map_lnd2glc_mod.o map_lnd2rof_irrig_mod.o mrg_mod.o prep_aoflux_mod.o prep_atm_mod.o prep_glc_mod.o prep_ice_mod.o prep_lnd_mod.o prep_ocn_mod.o prep_rof_mod.o prep_wav_mod.o seq_diag_mct.o seq_domain_mct.o seq_flux_mct.o seq_frac_mct.o seq_hist_mod.o seq_io_mod.o seq_map_mod.o seq_map_type_mod.o seq_rest_mod.o t_driver_timers_mod.o -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -latm -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -lice - L../../intel/mpt/debug/nothreads/mct/noesmf/lib/ -lclm -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -locn -L/lustre/scratch/x_johnsobk/FHIST_BGC. f09_d025.075.e03/bld/lib/ -lrof -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -lglc -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/ lib/ -lwav -L/lustre/scratch/x_johnsobk/FHIST_BGC.f09_d025.075.e03/bld/lib/ -lesp -L../../intel/mpt/debug/nothreads/mct/noesmf/c3a1l1i1o1r1g1w1e1/lib -lcsm_share - L../../intel/mpt/debug/nothreads/lib -lpio -lgptl -lmct -lmpeu -mkl=cluster -L/opt/cray/pe/parallel-netcdf/1.11.1.1/INTEL/19.0/lib -lpnetcdf -mkl
This produces a runtime error. The cesm.log says:
1: Rank 1 [Tue Oct 27 21:25:24 2020] [c9-3c0s2n2] application called MPI_Abort(MPI_COMM_WORLD, 1) - process 1
353: pio_support::pio_die:: myrank= -1 : ERROR: ionf_mod.F90: 235 :
353: NetCDF: Attempt to use feature that was not turned on when netCDF was built.
Is this caused by the fact that netcdf is not linked? Here is the relevant output of nc-config --all and the full output is attached as "nc-config.txt":
This netCDF 4.6.3 has been built with the following features:
. . .
--has-pnetcdf -> no
--has-szlib -> no
--has-cdf5 -> yes
--has-parallel4 -> no
--has-parallel -> no
. . .
My next attempt is to try to append the netcdf link using the SLIBS tag in config_compilers.xml:
<SLIBS>
<append>-L$(NETCDF_PATH_KAUST) -lnetcdff</append>
</SLIBS>
Here are some relevant xmlquery settings from the case:
./xmlquery MPILIB
MPILIB: mpt
./xmlquery PIO_TYPENAME
PIO_TYPENAME: ['CPL:pnetcdf', 'ATM:pnetcdf', 'LND:pnetcdf', 'ICE:pnetcdf', 'OCN:pnetcdf', 'ROF:pnetcdf', 'GLC:pnetcdf', 'WAV:pnetcdf', 'ESP:pnetcdf']
Any advice would be greatly appreciated.
Thank you,
Ben Johnson / johnsonb