I/O-API-LARGE won't compile

I’m trying to create an CMAQ-v55-DDM-3D working environment/code on a RedHat 9.6. I successfully installed netcdf-c-4.9.3, netcdf-fortran-4.6.2, ioap-3.2 and openmpi-5.0.8. Using this environment I’ve compiled CCTM with and without DDM and was able to run the benchmark examples in parallel. However, when I try to run our model data using mpi, ioapi fails on WRITE3() calls. I’m guessing that perhaps I need ioapi-3.2-large. However, when trying to compile ioapi-3.2-large, I receive the error below for R_X86_64_PC32 type errors.

cd /data/cmaq/repos/ioapi-3.2-20200828/Linux2_x86_64gfort10_medium; gfortran -I/data/cmaq/repos/ioapi-3.2-20200828/ioapi -I/data/cmaq/repos/ioapi-3.2-20200828/Linux2_x86_64gfort10_medium -fallow-argument-mismatch -mcmodel=medium -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -DIOAPI_NCF4=1    -O3 -fallow-argument-mismatch -mcmodel=medium -ffast-math -funroll-loops -m64   -DAUTO_ARRAYS=1 -DF90=1 -DFLDMN=1 -DFSTR_L=int -DIOAPI_NO_STDOUT=1 -DNEED_ARGS=1 -DIOAPI_NCF4=1   -c /data/cmaq/repos/ioapi-3.2-20200828/m3tools/m3combo.f90cd /data/cmaq/repos/ioapi-3.2-20200828/Linux2_x86_64gfort10_medium; gfortran  m3combo.o -L/data/cmaq/repos/ioapi-3.2-20200828/Linux2_x86_64gfort10_medium -lioapi -L/data/cmaq/lib/netcdf-large/lib -lnetcdff -lnetcdf  -dynamic -L/usr/lib64 -lm -lpthread -lc  -o m3combo/data/cmaq/repos/ioapi-3.2-20200828/Linux2_x86_64gfort10_medium/libioapi.a(iobin3.o): in function crtbin3_': iobin3.c:(.text+0x905): relocation truncated to fit: R_X86_64_PC32 against symbol bdesc3_’ defined in LARGE_COMMON section in m3combo.oiobin3.c:(.text+0x90c): relocation truncated to fit: R_X86_64_PC32 against symbol bdesc3_' defined in LARGE_COMMON section in m3combo.o iobin3.c:(.text+0x91a): relocation truncated to fit: R_X86_64_PC32 against symbol bdesc3_’ defined in LARGE_COMMON section in m3combo.oiobin3.c:(.text+0x921): relocation truncated to fit: R_X86_64_PC32 against symbol bdesc3_' defined in LARGE_COMMON section in m3combo.o iobin3.c:(.text+0x928): relocation truncated to fit: R_X86_64_PC32 against symbol bdesc3_’ defined in LARGE_COMMON section in m3combo.oiobin3.c:(.text+0x92f): relocation truncated to fit: R_X86_64_PC32 against symbol bdesc3_' defined in LARGE_COMMON section in m3combo.o iobin3.c:(.text+0x936): relocation truncated to fit: R_X86_64_PC32 against symbol bdesc3_’ defined in LARGE_COMMON section in m3combo.oiobin3.c:(.text+0x94a): relocation truncated to fit: R_X86_64_32 against symbol bdesc3_' defined in LARGE_COMMON section in m3combo.o iobin3.c:(.text+0xb09): relocation truncated to fit: R_X86_64_PC32 against symbol bdesc3_’ defined in LARGE_COMMON section in m3combo.oiobin3.c:(.text+0xe11): relocation truncated to fit: R_X86_64_PC32 against symbol `bdesc3_’ defined in LARGE_COMMON section in m3combo.oiobin3.c:(.text+0xe2a): additional relocation overflows omitted from the output

What compiler are you using? Post the output of the following commands:

gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5)

What steps have you taken to resolve this issue already?

i’ve read through the guidance “ Availability/Download of the BAMS/Models-3 I/O API

But have not been able to resolve the above. Maybe I’m missing something? Does anyone have any ideas?
Thank you!

Makefile.ioapi.txt (15.4 KB)

Makeinclude.Linux2_x86_64gfort10_medium.txt (1.8 KB)

Makefile.root.txt (10.2 KB)

Makefile.m3tools.txt (13.2 KB)

@bwzelt it sounds like your machine may not have enough address space to allocate very large arrays.

You may want to consult your system managers on the limits of large arrays and the necessary “mcmodel” flag to set.

Check that in your I/O API-large build, the values of variables MXFILE3 and MXVARS3 in parms3.h match those in PARMS3.EXT.

A mis-match would cause exactly this sort of problem (noting that recent GNU compilers have become rather more stuffy than they used to be ;-( )