Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Compile options

kgurer777

New member
Hi,

I used to compile and run MPAS version 7 and want to test the recent versions of MPAS. For this, I am trying to compile MPAS-Model-8.2.2 using several available compilation options, namely ifort, ifort-gcc, intel-mpi, and gfortran. All create different errors and don't create the executable. First several lines of errors as soon as errors are produced for each options are:

ifort or ifort-gcc: (errors are produced at the beginning of the compilation)

mpif90 -D_MPI -DCORE_INIT_ATMOSPHERE -DMPAS_NAMELIST_SUFFIX=init_atmosphere -DMPAS_EXE_NAME=init_atmosphere_model -DSINGLE_PRECISION -DMPAS_NATIVE_TIMERS -DMPAS_GIT_VERSION=unknown -DMPAS_BUILD_TARGET=ifort -DMPAS_SMIOL_SUPPORT -DHIDE_MPI -O3 -convert big_endian -free -align array64byte -c ESMF_BaseMod.F90 -I/home/kgurer/mpas.utils/installed/include -I/data/mmb/raqm/work/users/kgurer/mpas/MPAS-Model-8.2.2/src/external/SMIOL -I/home/kgurer/mpas.utils/installed/include -I.
gfortran: error: big_endian: No such file or directory
gfortran: error: array64byte: No such file or directory
gfortran: error: unrecognized command line option ‘-convert’
gfortran: error: unrecognized command line option ‘-align’
make[4]: *** [Makefile:60: ESMF_BaseMod.o] Error 1

gfortran: (many modules are compiled and errors come after couple minutes or so)

mpif90 -O3 -o init_atmosphere_model driver/*.o -L. -ldycore -lops -lframework -L/data/mmb/raqm/work/users/kgurer/mpas/MPAS-Model-8.2.2/src/external/SMIOL -lsmiolf -lsmiol -L/home/kgurer/mpas.utils/installed/lib -lhdf5_hl -lhdf5 -ldl -lz -I./external/esmf_time_f90 -L./external/esmf_time_f90 -lesmf_time
/data/mmb/raqm/work/users/kgurer/mpas/MPAS-Model-8.2.2/src/external/SMIOL/libsmiol.a(smiol.o): In function `SMIOL_open_file':
smiol.c:(.text+0x3d1): undefined reference to `ncmpi_open'
smiol.c:(.text+0x482): undefined reference to `ncmpi_open'
smiol.c:(.text+0x4a3): undefined reference to `ncmpi_buffer_attach'
smiol.c:(.text+0x4da): undefined reference to `ncmpi_create'

intel-mpi:

mpiifort -O3 -o init_atmosphere_model driver/*.o -L. -ldycore -lops -lframework -L/data/mmb/raqm/work/users/kgurer/mpas/MPAS-Model-8.2.2/src/external/SMIOL -lsmiolf -lsmiol -L/home/kgurer/mpas.utils/installed/lib -lhdf5_hl -lhdf5 -ldl -lz -I./external/esmf_time_f90 -L./external/esmf_time_f90 -lesmf_time
./libframework.a(mpas_dmpar.o): In function `mpas_dmpar_mp_mpas_dmpar_finalize_':
mpas_dmpar.F:(.text+0x1e): undefined reference to `mpi_comm_free_f08_'
mpas_dmpar.F:(.text+0x2f): undefined reference to `mpi_finalize_f08_'
./libframework.a(mpas_dmpar.o): In function `mpas_dmpar_mp_mpas_dmpar_bcast_int_':
mpas_dmpar.F:(.text+0xab): undefined reference to `mpi_bcast_f08ts_'

The command and settings that I have are:

"make intel-mpi CORE=init_atmosphere AUTOCLEAN=true"

MPAS_EXTERNAL_LIBS=-L/home/kgurer/mpas.utils/installed/lib -lhdf5_hl -lhdf5 -ldl -lz
MPAS_EXTERNAL_INCLUDES=-I/home/kgurer/mpas.utils/installed/include

I compiled the required libraries using source files and script located at:


and here are the list of libraries that I generated:

-rwxr-xr-x 1 37M Oct 25 13:52 libmpi.so.12.1.7*
lrwxrwxrwx 1 16 Oct 25 13:52 libmpi.so.12 -> libmpi.so.12.1.7*
lrwxrwxrwx 1 16 Oct 25 13:52 libmpi.so -> libmpi.so.12.1.7*
-rwxr-xr-x 1 981 Oct 25 13:52 libmpi.la*
-rwxr-xr-x 1 13M Oct 25 13:52 libmpifort.so.12.1.7*
lrwxrwxrwx 1 20 Oct 25 13:52 libmpifort.so.12 -> libmpifort.so.12.1.7*
lrwxrwxrwx 1 20 Oct 25 13:52 libmpifort.so -> libmpifort.so.12.1.7*
-rwxr-xr-x 1 1.1K Oct 25 13:52 libmpifort.la*
-rwxr-xr-x 1 178K Oct 25 13:52 libmpicxx.so.12.1.7*
lrwxrwxrwx 1 19 Oct 25 13:52 libmpicxx.so.12 -> libmpicxx.so.12.1.7*
lrwxrwxrwx 1 19 Oct 25 13:52 libmpicxx.so -> libmpicxx.so.12.1.7*
-rwxr-xr-x 1 1.1K Oct 25 13:52 libmpicxx.la*
-rw-r--r-- 1 117M Oct 25 13:52 libmpi.a
-rw-r--r-- 1 49M Oct 25 13:52 libmpifort.a
-rw-r--r-- 1 248K Oct 25 13:52 libmpicxx.a
lrwxrwxrwx 1 9 Oct 25 13:52 libmpl.so -> libmpi.so*
lrwxrwxrwx 1 9 Oct 25 13:52 libopa.so -> libmpi.so*
lrwxrwxrwx 1 9 Oct 25 13:52 libmpich.so -> libmpi.so*
lrwxrwxrwx 1 13 Oct 25 13:52 libfmpich.so -> libmpifort.so*
lrwxrwxrwx 1 13 Oct 25 13:52 libmpichf90.so -> libmpifort.so*
lrwxrwxrwx 1 12 Oct 25 13:52 libmpichcxx.so -> libmpicxx.so*
-rw-r--r-- 1 305K Oct 25 13:52 libz.a
-rwxr-xr-x 1 942 Oct 25 13:54 libhdf5.la*
-rw-r--r-- 1 38M Oct 25 13:54 libhdf5.a
-rw-r--r-- 1 3.9K Oct 25 13:54 libhdf5.settings
-rwxr-xr-x 1 1000 Oct 25 13:54 libhdf5_hl.la*
-rw-r--r-- 1 1009K Oct 25 13:54 libhdf5_hl.a
-rwxr-xr-x 1 1.1K Oct 25 13:55 libpnetcdf.la*
-rw-r--r-- 1 20M Oct 25 13:55 libpnetcdf.a
-rwxr-xr-x 1 1.3K Oct 25 13:56 libnetcdf.la*
-rw-r--r-- 1 4.0M Oct 25 13:56 libnetcdf.a
-rw-r--r-- 1 986 Oct 25 13:56 libnetcdf.settings
-rwxr-xr-x 1 1.4K Oct 25 13:56 libnetcdff.la*
-rw-r--r-- 1 1.6M Oct 25 13:56 libnetcdff.a
drwxr-xr-x 2 142 Oct 25 13:56 pkgconfig/
-rw-r--r-- 1 980K Oct 25 13:57 libpioc.a
-rw-r--r-- 1 784K Oct 25 13:57 libpiof.a

I couldn't find the libraries that gfortran and intel-mpi are looking for within the local library that I generated as well as system mpi libraries.
My questions are:

Which option should I use for Centos 8 Linux machine?
Where can I find those libraries that missing?
How are the local mpi libraries used compared to the mpi libraries that system has?

Thank you.

Kemal.
 
Based on the error messages you're reporting, it looks like you may have the GNU compilers available, and after setting the PNETCDF environment variable to the installation path of PnetCDF, I think there's a reasonable chance the code will compile. With MPAS v8.2, there is a 'gnu' build target that you can use in place of the old 'gfortran' build target. Specifically, then, you can:
  1. Set the PNETCDF environment variable to the directory where you've installed PnetCDF (this might be /home/kgurer/mpas.utils/installed)
  2. Compile using 'make gnu CORE=init_atmosphere', and if that's successful, follow with 'make gnu CORE=atmosphere'
 
Top