Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

PIO Build error: genf90.pl

Hello,I've ported CESM to Lonestar at the University of Texas. I recently updated from CESM 1.1 to CESM 1.2.0 and am working on configuring a run that I've done before. However, when I try to build, I get the following error:login1% ./*build
-------------------------------------------------------------------------
 CESM BUILDNML SCRIPT STARTING
 - To prestage restarts, untar a restart.tar file into /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/run
 infile is /work/01559/gailg/cesm1_2_0/scripts/i.e11.IG1850.f09_g16.002/Buildconf/cplconf/cesm_namelist 
CLM configure done.
CLM adding use_case 1850_glacierMEC_control defaults for var glc_nec with val 10 
CLM adding use_case 1850_glacierMEC_control defaults for var glc_smb with val .true. 
CLM adding use_case 1850_glacierMEC_control defaults for var hist_fincl2 with val QICE 
CLM adding use_case 1850_glacierMEC_control defaults for var hist_mfilt with val 1,1 
CLM adding use_case 1850_glacierMEC_control defaults for var hist_nhtfrq with val 0,-8760 
CLM adding use_case 1850_glacierMEC_control defaults for var sim_year with val 1850 
CLM adding use_case 1850_glacierMEC_control defaults for var sim_year_range with val constant 
CLM adding use_case 1850_glacierMEC_control defaults for var use_case_desc with val Running an IG case for 1850 conditions with the ice sheet model glimmer 
 CESM BUILDNML SCRIPT HAS FINISHED SUCCESSFULLY
-------------------------------------------------------------------------
-------------------------------------------------------------------------
 CESM PRESTAGE SCRIPT STARTING
 - Case input data directory, DIN_LOC_ROOT, is /work/01559/gailg/input/inputdata
 - Checking the existence of input datasets in DIN_LOC_ROOT
 CESM PRESTAGE SCRIPT HAS FINISHED SUCCESSFULLY
-------------------------------------------------------------------------
-------------------------------------------------------------------------
 CESM BUILDEXE SCRIPT STARTING
 COMPILER is intel
 - Build Libraries: mct gptl pio csm_share 
Thu Oct 17 12:36:50 CDT 2013 /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/mct/mct.bldlog.131017-123646
Thu Oct 17 12:37:21 CDT 2013 /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/gptl/gptl.bldlog.131017-123646
Thu Oct 17 12:37:23 CDT 2013 /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/pio/pio.bldlog.131017-123646
ERROR: buildlib.pio failed, see /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/pio/pio.bldlog.131017-123646
ERROR: cat /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/pio/pio.bldlog.131017-123646 The end of the PIO buildlog reads: configure: creating ./config.status
config.status: creating Makefile.conf
config.status: creating config.h
Please check the Makefile.conf
Have a nice day!
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio.F90 --> pio.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio_kinds.F90 --> pio_kinds.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/nf_mod.F90 --> nf_mod.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/ionf_mod.F90 --> ionf_mod.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio_types.F90 --> pio_types.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/calcdecomp.F90 --> calcdecomp.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/piolib_mod.F90 --> piolib_mod.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio_mpi_utils.F90 --> pio_mpi_utils.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio_nf_utils.F90 --> pio_nf_utils.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio_utils.F90 --> pio_utils.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio_msg_mod.F90 --> pio_msg_mod.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/calcdisplace_mod.F90 --> calcdisplace_mod.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio_msg_callbacks.F90 --> pio_msg_callbacks.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pio_support.F90 --> pio_support.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/C_interface_mod.F90 --> C_interface_mod.d
Making dependencies for /work/01559/gailg/cesm1_2_0/models/utils/pio/pionfatt_mod.F90 --> pionfatt_mod.d
/usr/bin/perl ../bin/genf90.pl /work/01559/gailg/cesm1_2_0/models/utils/pio/pionfread_mod.F90.in > pionfread_mod.F90
Can't open perl script "../bin/genf90.pl": No such file or directory
gmake: *** [pionfread_mod.F90] Error 2
I've looked for the genf90.pl script and found it in ~/cesm1_2_0/tools/cprnc/genf90/genf90.pl. I don't know what the "../bin/genf90.pl" location the model looks for might be, but it appears that the model is looking in the wrong place. Has anyone seen this problem before or have any suggestions on how to fix it? I've attached the complete pio.bldlog for reference.
 

jedwards

CSEG and Liaisons
Staff member
In the file buildlib.pio add the phrase GENF90=$CCSMROOT/tools/cprnc/genf90to the GMAKE command at the end of the file. 
Looking in my copy of cesm1.2.0 I see that it is already there.   Did you try to clone a case from 1.1 to 1.2?   If so I think that this will be the first of a number of errors that you may run into.   Better to start with create_newcase.
Jim 
 
I edited GENF90 in $CCSMROOT/models/utils/pio/Makefile which seems to have solved the problem, though you're right that I'm running into other issues. I haven't cloned a case from a previous version; I began with a create_newcase and configured things similarly. Unfortunately I'm still having these problems. This is my first time using the new version on Lonestar, but I'm not sure why these issues are coming up to begin with.
 

jedwards

CSEG and Liaisons
Staff member
Can you diff your scripts/ccsm_utils/Machines directory against a clean repo version?   I wonder if in porting 1_2_0 to lonestar the Machines directory from 1.1 was just copied over? 
 
I've compared to a clean checkout and the files from 1.2.0 are there. I've modified config_machines.xml to include an entry for Lonestar as well as added files env_mach_specific_lonestar.xml and mkbatch.lonestar. The changes/additions in those three files are the same as what I was using to run 1.2.1 since nothing on Lonestar has changed. Perhaps I need to start from scratch on the port?The error I'm getting when trying to build is:CESM BUILDEXE SCRIPT STARTING COMPILER is intel - Build Libraries: mct gptl pio csm_share Thu Oct 17 19:09:33 CDT 2013 /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/mct/mct.bldlog.131017-190920Thu Oct 17 19:10:05 CDT 2013 /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/gptl/gptl.bldlog.131017-190920Thu Oct 17 19:10:07 CDT 2013 /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/pio/pio.bldlog.131017-190920Thu Oct 17 19:10:48 CDT 2013 /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/csm_share/csm_share.bldlog.131017-190920ERROR: buildlib.csm_share failed, see /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/csm_share/csm_share.bldlog.131017-190920ERROR: cat /work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/csm_share/csm_share.bldlog.131017-190920 The end of the csm_share.bldlog file shows the error: mpif90  -c -I.  -I/opt/apps/intel11_1/netcdf/4.2.1.1/include -I/work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/mct/mct -I/work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/mct/mpeu -I/work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/pio -I/work/01559/gailg/cesm1_2_0/models/utils/pio -I/work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/lib/include -I. -I/work/01559/gailg/cesm1_2_0/scripts/i.e11.IG1850.f09_g16.002/SourceMods/src.share -I/work/01559/gailg/cesm1_2_0/models/drv/shr_mct -I/work/01559/gailg/cesm1_2_0/models/drv/shr -I/work/01559/gailg/cesm1_2_0/models/dead_share -I/work/01559/gailg/cesm1_2_0/models/csm_share/shr -I/work/01559/gailg/cesm1_2_0/models/utils/esmf_wrf_timemgr -I/work/01559/gailg/output/i.e11.IG1850.f09_g16.002/bld/lib/include  -fp-model precise -convert big_endian -assume byterecl -ftz -traceback  -DNUM_COMP_INST_ATM=1 -DNUM_COMP_INST_LND=1 -DNUM_COMP_INST_OCN=1 -DNUM_COMP_INST_ICE=1 -DNUM_COMP_INST_GLC=1 -DLINUX  -DMCT_INTERFACE -DHAVE_MPI -DFORTRANUNDERSCORE -DNO_R16 -DHAVE_F2008_CONTIGUOUS -DLINUX -DCPRINTEL  -DHAVE_SLASHPROC -FR   /work/01559/gailg/cesm1_2_0/models/csm_share/shr/shr_vmath_mod.F90/work/01559/gailg/cesm1_2_0/models/csm_share/shr/shr_spfn_mod.F90(304): error #6407: This symbolic name is not an intrinsic function name or an intrinsic subroutine name.   [ERFC_SCALED]  intrinsic erfc_scaled------------^/work/01559/gailg/cesm1_2_0/models/csm_share/shr/shr_spfn_mod.F90(319): error #6407: This symbolic name is not an intrinsic function name or an intrinsic subroutine name.   [ERFC_SCALED]  intrinsic erfc_scaled------------^/work/01559/gailg/cesm1_2_0/models/csm_share/shr/shr_spfn_mod.F90(334): error #6407: This symbolic name is not an intrinsic function name or an intrinsic subroutine name.   [GAMMA]  intrinsic gamma------------^/work/01559/gailg/cesm1_2_0/models/csm_share/shr/shr_spfn_mod.F90(335): error #7137: Any procedure referenced in a PURE procedure, including one referenced via a defined operation or assignmnent, must be explicitly declared PURE.   [GAMMA]  res = gamma(x)--------^compilation aborted for /work/01559/gailg/cesm1_2_0/models/csm_share/shr/shr_spfn_mod.F90 (code 1)gmake: *** [shr_spfn_mod.o] Error 1gmake: *** Waiting for unfinished jobs....gmake complib -j 2 MODEL=csm_share COMPLIB=libcsm_share.a USER_CPPDEFS="  -DNUM_COMP_INST_ATM=1 -DNUM_COMP_INST_LND=1 -DNUM_COMP_INST_OCN=1 -DNUM_COMP_INST_ICE=1 -DNUM_COMP_INST_GLC=1" -f /work/01559/gailg/cesm1_2_0/scripts/i.e11.IG1850.f09_g16.002/Tools/Makefile  returned non-zero exit status 2 
 

santos

Member
Hmm; this is due to an old version of Intel compiler, I think. We've probably tested with Intel no earlier than 12.1 for CESM 1.2. Look for the following line at the top of models/csm_share/shr/shr_spfn_mod.F90#if defined CPRIBM || defined CPRINTEL || defined __GFORTRAN__ || defined CPRCRAY || defined CPRLAHEYJust remove CPRINTEL from this list, and I think it should work.Note to Jim: In the future, should we put these declarations, e.g. HAVE_GAMMA_INTRINSICS and HAVE_GET_ENVIRONMENT, in a config.h and have Machines create that? We keep having this problem where as soon as you think you have the compiler support issues nailed down, it turns out that someone has an older compiler that breaks. It might be better if users (and developers porting the model) could just supply a config.h for their own compiler as a workaround.
 
I removed CPRINTEL from that line, so it now reads:#if defined CPRIBM || defined __GFORTRAN__ || defined CPRCRAY || defined CPRLAHEYUnfortunately, I still get an error (see cesm_share.bldlog excerpt below). I'm working on Lonestar at TACC, where the most up to date intel compiler is 11.1, so I don't have the option to update. Is there anything else I might be able to do to get this working on my current machine? /work/01559/gailg/cesm1_2_0/models/drv/shr/seq_comm_mct.F90(77): error #6592: This symbol must be a defined parameter, an enumerator, or an argument of an inquiry function that evaluates to a compile-time constant.   [NUM_COMP_INST_WAV]  integer, parameter, public :: num_inst_wav = NUM_COMP_INST_WAV-----------------------------------------------^/work/01559/gailg/cesm1_2_0/models/drv/shr/seq_comm_mct.F90(78): error #6592: This symbol must be a defined parameter, an enumerator, or an argument of an inquiry function that evaluates to a compile-time constant.   [NUM_COMP_INST_ROF]  integer, parameter, public :: num_inst_rof = NUM_COMP_INST_ROF-----------------------------------------------^/work/01559/gailg/cesm1_2_0/models/drv/shr/seq_comm_mct.F90(77): error #6404: This name does not have a type, and must have an explicit type.   [NUM_COMP_INST_WAV]  integer, parameter, public :: num_inst_wav = NUM_COMP_INST_WAV-----------------------------------------------^/work/01559/gailg/cesm1_2_0/models/drv/shr/seq_comm_mct.F90(78): error #6404: This name does not have a type, and must have an explicit type.   [NUM_COMP_INST_ROF]  integer, parameter, public :: num_inst_rof = NUM_COMP_INST_ROF-----------------------------------------------^compilation aborted for /work/01559/gailg/cesm1_2_0/models/drv/shr/seq_comm_mct.F90 (code 1)gmake: *** [seq_comm_mct.o] Error 1gmake: *** Waiting for unfinished jobs....gmake complib -j 2 MODEL=csm_share COMPLIB=libcsm_share.a USER_CPPDEFS="  -DNUM_COMP_INST_ATM=1 -DNUM_COMP_INST_LND=1 -DNUM_COMP_INST_OCN=1 -DNUM_COMP_INST_ICE=1 -DNUM_COMP_INST_GLC=1" -f /work/01559/gailg/cesm1_2_0/scripts/i.e11.IG1850.f09_g16.002/Tools/Makefile  returned non-zero exit status 2 
 
Top