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

Building CAM3.0 with Ifort 11.1: undefined reference to `_mm_idivrem_epi32'

Hi,

I'm trying to build the cam3_0_brnchT_release01 version of CAM3 on a Linux cluster, Red Hat 4.1.2-46 and CentOS release 5.4.

I am using the Ifort 11.1.056 compiler and at link time:
/usr/mpi/intel/openmpi-1.2.8/bin/mpif90 -o /users/gpfs1/others/plangen/exe/cam_iso.chg/camiso_DOM.T42.
test.02/bld/cam BalanceCheckMod.o [...] zm_conv.o -L/users/others/plangen/tools/netcdf_intel11/lib -lnetcdf -L/users/gpfs1/others/plangen/exe/cam_iso.chg/camiso_DOM.T42.test.02/bld/esmf/lib/libO/linux_intel -lesmf -L/usr/mpi/intel/openmpi-1.2.8/lib64 -lmpi_f77 -lmpi

... I get the following error:

/phys_grid.o: In function `phys_grid_mp_assign_chunks_':
/others/plangen/models/cam_iso.chg/models/atm/cam/src/physics/cam1/phys_grid.F90:(.text+0x9197): undefined reference to `_mm_idivrem_epi32'
phys_grid.o: In function `phys_grid_mp_create_chunks_':
/others/plangen/models/cam_iso.chg/models/atm/cam/src/physics/cam1/phys_grid.F90:(.text+0xae6b): undefined reference to `_mm_idivrem_epi32'
gmake: *** [/users/gpfs1/others/plangen/exe/cam_iso.chg/camiso_DOM.T42.test.02/bld/cam] Error 1

Any ideas what this means and what I can do about it?

Building and running cam3_1_brnchT_p2 goes fine on the same machine with the same compiler. So why not just use that? Or, even better, shift to a newer CAM? The thing is, for exactly this version of CAM3, I have an implementation of stable water isotopes (developed by D. Noone), and I'd like to continue my experiments with this code on this new machine.

Thanks,
Peter
 

eaton

CSEG and Liaisons
The symbol _mm_idivrem_epi32 isn't part of the CAM code. So my approach would be to look around in the lib directories for both the compiler and mpi and try to find that symbol in one of the library files (using the nm utility). Then you can add that library to the link line.
 
Top