pio_nc4.c:(.text+0x3212): undefined reference to `nc_inq_filter_avail'

cristian-vasile.achim

Cristian Achim
New Member
Hello,

I am trying to use cesm2.2.2 on our supercomputer Mahti. This is `_compilers.xml` entry:

```

<!-- ******************* MAHTI ********************* -->
<compiler MACH="mahti" COMPILER="gnu">
<CFLAGS>
<base> -std=gnu99 </base>
<append compile_threaded="TRUE"> -fopenmp </append>
</CFLAGS>
<FFLAGS>
<append compile_threaded="TRUE"> -fopenmp </append>
<append> -w -fallow-argument-mismatch -fallow-invalid-boz -lopenblas</append>
</FFLAGS>
<LDFLAGS>
<append compile_threaded="TRUE"> -fopenmp </append>
</LDFLAGS>
<NETCDF_C_PATH>$(NETCDF_C_INSTALL_ROOT)</NETCDF_C_PATH>
<NETCDF_FORTRAN_PATH>$(NETCDF_FORTRAN_INSTALL_ROOT)</NETCDF_FORTRAN_PATH>
<!-- <NETCDF_PATH>$(NETCDF_FORTRAN_INSTALL_ROOT)</NETCDF_PATH> --> <!--- Before running do export NETCDF_PATH=... -->
<PNETCDF_PATH>$(PARALLEL_NETCDF_INSTALL_ROOT)</PNETCDF_PATH>
<SLIBS>
<append>-L$(OPENBLAS_INSTALL_ROOT) -lopenblas -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -Wl,-rpath=$(NETCDF_PATH)/lib -Wl,-rpath=$(PARALLEL_NETCDF_INSTALL_ROOT)/lib</append>
</SLIBS>
<ESMF_LIBDIR>/fmi/datasets/CESM-INPUT/esmf710r/lib/libO/Linux.intel.64.openmpi.default</ESMF_LIBDIR>
</compiler>
````
And this is the `_machines.xml` entry:

```

<!-- MAHTI -->
<machine MACH="mahti">
<DESC>Atos BullSequana XH2000, 128 pes/node (two 64-core processors) and 256 GB of memory/node, batch system is SLURM</DESC>
<OS>LINUX</OS>
<COMPILERS>gnu</COMPILERS>
<MPILIBS>openmpi</MPILIBS>
<PROJECT>project_2008521</PROJECT>
<CHARGE_ACCOUNT>project_2008521</CHARGE_ACCOUNT>
<CIME_OUTPUT_ROOT>/scratch/project_2008521/$USER/CIME_OUTPUT/</CIME_OUTPUT_ROOT>
<DIN_LOC_ROOT>/scratch/project_2008521/CESM-INPUT/inputdata</DIN_LOC_ROOT>
<DIN_LOC_ROOT_CLMFORC>/scratch/project_2008521/CESM-INPUT/inputdata/atm/datm7</DIN_LOC_ROOT_CLMFORC>
<DOUT_S_ROOT>/scratch/project_2008521/archive/$CASE</DOUT_S_ROOT>
<BASELINE_ROOT>/projappl/project_2008521/CESM-INPUT/cime/cesm_baselines</BASELINE_ROOT>
<CCSM_CPRNC>/projappl/project_2008521/cesm213/cime/tools/cprnc/cprnc</CCSM_CPRNC>
<GMAKE_J>64</GMAKE_J>
<BATCH_SYSTEM>slurm</BATCH_SYSTEM>
<SUPPORTED_BY>cristian at csc, monika at fmi</SUPPORTED_BY>
<MAX_TASKS_PER_NODE>128</MAX_TASKS_PER_NODE>
<MAX_MPITASKS_PER_NODE>64</MAX_MPITASKS_PER_NODE>
<PROJECT_REQUIRED>TRUE</PROJECT_REQUIRED>
<mpirun mpilib="default">
<executable>srun</executable>
</mpirun>
<module_system type="module" allow_error="true">
<init_path lang="perl">/usr/share/lmod/lmod/init/perl</init_path>
<init_path lang="python">/usr/share/lmod/lmod/init/env_modules_python.py</init_path>
<init_path lang="csh">/usr/share/lmod/lmod/init/csh</init_path>
<init_path lang="sh">/usr/share/lmod/lmod/init/sh</init_path>
<cmd_path lang="perl">/usr/share/lmod/lmod/libexec/lmod perl</cmd_path>
<cmd_path lang="python">/usr/share/lmod/lmod/libexec/lmod python</cmd_path>
<cmd_path lang="csh">module</cmd_path>
<cmd_path lang="sh">module</cmd_path>
<modules>
<command name="purge"/>
<command name="load">cmake</command>
<!-- <command name="load">perl/5.34.1</command> -->
<command name="load">python-data/3.8-22.10</command>
<command name="load">gcc/11.2.0</command>
<command name="load">openmpi/4.1.2</command>
<command name="load">openblas</command>
<command name="load">parallel-netcdf/1.12.2</command>
<command name="load">netcdf-c/4.8.1</command>
<command name="load">netcdf-fortran/4.5.3</command>
</modules>
</module_system>
```
The `./gdescribe_version` gives this:
```
$ ./describe_version
------------------------------------------------------------------------
git describe:
release-cesm2.2.2-0-g779b0a3
```





Have you made any changes to files in the source tree?
- Describe any changes (code, xml files, etc.)
I added entries to the `.xml` files corresponding to our machine Mahti. Those entries worked without issues with the **cesm2.1.1**.

Describe every step you took leading up to the problem:
- Describe every step you took, starting with the create_newcase command and including any changes you made to xml files, user_nl files, etc. Please try to reproduce the problem first using your own instructions.

When I create a case the build step failed:
```
/scratch/project_2008521/cristian/CIME_OUTPUT/test_1/bld/gnu/openmpi/nodebug/nothreads/mct/lib/libpioc.a(pio_nc4.c.o): in function `PIOc_inq_filter_avail':
pio_nc4.c:(.text+0x3212): undefined reference to `nc_inq_filter_avail'
```

If this is a port to a new machine: Please attach any files you added or changed for the machine port (e.g., config_compilers.xml, config_machines.xml, and config_batch.xml) and tell us the compiler version you are using on this machine.
Please attach any log files showing error messages or other useful information.

- If the error occurs during the build, please attach the appropriate build log file showing the compilation error message.
- If the error occurs during the run, please attach all log files from the run (cpl.log, cesm.log and all component log files).



Describe your problem or question:
 

Attachments

jedwards

CSEG and Liaisons
Staff member
Try updating PIO to the lastest release. To do this edit file Externals.cfg and replace the pio tag with pio2_6_4,
then run ./manage_externals/checkout_externals pio
 

cristian-vasile.achim

Cristian Achim
New Member
Hello,

Thank you for your fast reply.
In the root folder I have the file Externals.cfg, but I have no pio word.

[cam]
tag = cam_cesm2_2_rel_09
protocol = git
repo_url = GitHub - ESCOMP/CAM: Community Atmosphere Model
local_path = components/cam
externals = Externals_CAM.cfg
required = True

[cice]
tag = cice5-cesm2.2.2-20231220
protocol = git
repo_url = GitHub - ESCOMP/CESM_CICE5: CESM2 Version of CICE
local_path = components/cice
required = True

[cdeps]
hash = d808b7c
protocol = git
repo_url = GitHub - ESCOMP/CDEPS: Community Data Models for Earth Prediction Systems
local_path = components/cdeps
required = True

[cime]
tag = cime5.8.32.9
protocol = git
repo_url = GitHub - ESMCI/cime: Common Infrastructure for Modeling the Earth
local_path = cime
externals = ../Externals_cime.cfg
required = True

[cism]
tag = cism2_1_69_b
protocol = git
repo_url = GitHub - ESCOMP/CISM-wrapper: Community Ice Sheet Model wrapper for CESM
local_path = components/cism
externals = Externals_CISM.cfg
required = True

[clm]
tag = release-cesm2.2.04
protocol = git
repo_url = GitHub - ESCOMP/CTSM: Community Terrestrial Systems Model (includes the Community Land Model of CESM)
local_path = components/clm
externals = Externals_CLM.cfg
required = True

[fms]
tag = fi_20200609_cesm2.2_231205
protocol = git
repo_url = GitHub - ESCOMP/FMS_interface
local_path = libraries/FMS
externals = Externals_FMS.cfg
required = False

[mom]
tag = mi_20200908
protocol = git
repo_url = GitHub - ESCOMP/MOM_interface: CESM interface to MOM Ocean Model
local_path = components/mom
externals = Externals.cfg
required = False

[mosart]
tag = mosart1_0_37_1
protocol = git
repo_url = GitHub - ESCOMP/MOSART: Model for Scale Adaptive River Transport, Mosart, part of the Community Earth System Model
local_path = components/mosart
required = True

[pop]
tag = pop2_cesm2_2_rel_n01
protocol = git
repo_url = GitHub - ESCOMP/POP2-CESM: Parallel Ocean Program (POP2) in CESM
local_path = components/pop
externals = Externals_POP.cfg
required = True

[rtm]
tag = rtm1_0_72
protocol = git
repo_url = GitHub - ESCOMP/RTM: River Transport Model, RTM, part of the Community Earth System Model
local_path = components/rtm
required = True

[ww3]
tag = ww3_200710
protocol = git
repo_url = GitHub - ESCOMP/WW3-CESM: WaveWatch III (WW3) in CESM
local_path = components/ww3
required = True

[externals_description]
schema_version = 1.0.01
 

jedwards

CSEG and Liaisons
Staff member
Sorry - I had that incorrect. In cesm/cime/src/externals/ you will find directories pio1 and pio2. Replace the pio2 directory with a
clone of the pio repository
 

cristian-vasile.achim

Cristian Achim
New Member
This is what I did:
Sorry - I had that incorrect. In cesm/cime/src/externals/ you will find directories pio1 and pio2. Replace the pio2 directory with a
clone of the pio repository

This is what I did:

Code:
```
git clone https://github.com/NCAR/ParallelIO.git pio2
cd pio2
git checkout pio2_6_4
```

Then:
Code:
```
create_newcase --compset FWmadSD --res f09_f09_mg17 --case test_1 --mach mahti
 cd test_1/
./case.setup
./case.build
```


In the end I still get the same error:

Code:
```
Building cesm from /projappl/project_2008521/cesm2.2.2/cime/src/drivers/mct/cime_config/buildexe with output to /scratch/project_2008521/cristian/CIME_OUTPUT/test_1/bld/cesm.bldlog.250131-144849
pio_nc4.c:(.text+0x3212): undefined reference to `nc_inq_filter_avail'
```
 

cristian-vasile.achim

Cristian Achim
New Member
It could be the version of netcdf you are using? Latest is 4.9.2
I do not know much about netcdf and cesm in general. For the moment I am using v4.8.1 (the higher version in our cluster).

I will check the possibility to use the 4.9.2. , but before starting to manually compile and test other versions, is there way to know for sure? Is there some list of dependencies that I can check?
 
Back
Top