Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

a problem to use ifort 11

mingquan
Beginner
1,200 Views
Hi,

I experienced a strange problem when I compiled geos-chem model with ifort 11. There
is no any problem to use ifort 10.1.0.018 and 015 (I have used it for a long time). I
found there is a huge difference between the result from ifort 11 and that from
ifort 10. Obviously, the result from ifort 11 is wrong. I think the model may be
incompatible with ifort 11, but I don't know where. I list a part of compiling
codes in the following. Would you please tell me how to modify it in order to get
the consistent result with that from ifort 10? Thanks a lot.

Mingquan

#=============================================================================
# $Id: Makefile.ifort,v 1.27 2008/11/18 21:55:55 bmy Exp $
#
# GEOS-Chem Makefile for LINUX/IFORT compiler (bmy, Thu Nov 6 16:59:20 2008)
#=============================================================================
SHELL = /bin/sh

# IFORT compilation options
FFLAGS = -cpp -w -O2 -auto -noalign -convert big_endian

# IFORT compilation options (for debugging: no optimization)
#FFLAGS = -cpp -w -noalign -convert big_endian -g -traceback

# Compile command -- multiprocessor
F90 = ifort $(FFLAGS) -openmp -Dmultitask

# Compile command -- single processor
#F90 = ifort $(FFLAGS)

OBJSe = \
ifort_errmsg.o

OBJS = \
CO_strat_pl.o \
airmas.o \
anthroems.o \
arsl1k.o \
backsub.o \
biofit.o \
boxvl.o \
calcrate.o \
......
....
0 Kudos
5 Replies
TimP
Honored Contributor III
1,200 Views
If you were running 32-bit linux, and depended on the default x87 code generation, you would have to specify that in 11.x by the -mia32 option. If this is your first try at building with -msse2 (current default) you might set -fp-model source so as to avoid risky optimizations, and specify explicitly in your source code any place where you depend on promotion from single to double precision.
0 Kudos
mingquan
Beginner
1,200 Views
Quoting - tim18
If you were running 32-bit linux, and depended on the default x87 code generation, you would have to specify that in 11.x by the -mia32 option. If this is your first try at building with -msse2 (current default) you might set -fp-model source so as to avoid risky optimizations, and specify explicitly in your source code any place where you depend on promotion from single to double precision.

No, I am running 64-bit linux (Dell x86_64, precision workstation). Still need mention when compiling? what is the default set for ifort 11? The problem may exist in the different default between ifort 10 and 11.
0 Kudos
mingquan
Beginner
1,200 Views
Quoting - tim18
If you were running 32-bit linux, and depended on the default x87 code generation, you would have to specify that in 11.x by the -mia32 option. If this is your first try at building with -msse2 (current default) you might set -fp-model source so as to avoid risky optimizations, and specify explicitly in your source code any place where you depend on promotion from single to double precision.

I tried this, but it could not give any change. Any more suggestion? Thanks a lot.
0 Kudos
mingquan
Beginner
1,200 Views
Quoting - tim18
If you were running 32-bit linux, and depended on the default x87 code generation, you would have to specify that in 11.x by the -mia32 option. If this is your first try at building with -msse2 (current default) you might set -fp-model source so as to avoid risky optimizations, and specify explicitly in your source code any place where you depend on promotion from single to double precision.

The problem is in the library libiomp5.so, incompatible with the model. Any suggestion for this problem? Thanks.
0 Kudos
TimP
Honored Contributor III
1,200 Views
Quoting - mingquan

The problem is in the library libiomp5.so, incompatible with the model. Any suggestion for this problem? Thanks.
As long as you have rebuilt everything with gcc or Intel 10.1 or newer compiler, and haven't also linked another OpenMP library, there is no reason for libiomp5 to be incompatible. If you have something in the Makefile or build scripts which specifies something specific to an earlier compiler, please fix that to match your current compiler.
0 Kudos
Reply