ICE during linking for coarray code

ICE during linking for coarray code

Hi,

I've just install the last version of the compiler, ifort version 15.0.0, on the following kernel 3.15.10-200.fc20.x86_64.
This version fails to compile a (rather large) code with the "-O2 -ipo" options .
Actually, the compilation step goes ok but the problem appears during the linking step.
Here are the warning/errors:

ipo: warning #11021: unresolved MPI_Barrier
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so                                                                                                                         
ipo: warning #11021: unresolved MPI_Comm_dup                                                                                                                                                                    
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so                                                                                                                         
ipo: warning #11021: unresolved MPI_Put                                                                                                                                                                         
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so                                                                                                                         
ipo: warning #11021: unresolved MPI_Get                                                                                                                                                                         
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so                                                                                                                         
ipo: warning #11021: unresolved MPI_Isend                                                                                                                                                                       
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so                                                                                                                         
ipo: warning #11021: unresolved MPI_Init                                                                                                                                                                        
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so                                                                                                                         
ipo: warning #11021: unresolved MPI_Free_mem                                                                                                                                                                    
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_unlock
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Alloc_mem
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Comm_size
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Abort
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Wait
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Recv
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Finalized
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Comm_rank
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_lock
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Finalize
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_free
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_set_errhandler
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_fence
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_create
        Referenced in /opt/intel/composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
IERROR_MODULE_ID_8000

fortcom: Severe: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report.  Note: File and line given may not be explicit cause of this error.
in file mesh_class.f90, line 922, column 12

ipo-4: error #11005: multi-object compilation 3 returned error status 3
IERROR_MODULE_ID_8000

fortcom: Severe: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report.  Note: File and line given may not be explicit cause of this error.
in file bndcond_interblock_class.f90, line 118, column 12

ipo-4: error #11005: multi-object compilation 1 returned error status 3
IERROR_MODULE_ID_8000

fortcom: Severe: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report.  Note: File and line given may not be explicit cause of this error.
in file system2d_class.f90, line 157, column 12

ipo-4: error #11005: multi-object compilation 4 returned error status 3
ifort: error #10014: problem during multi-file optimization compilation (code 3)
make[3]: *** [all] Erreur 3
make[2]: *** [all] Erreur 2
make[1]: *** [app] Erreur 2
make: *** [all] Erreur 2

 

Compiling the same code, with the same compilation options, but using ifort version 14.0.3 gives these warnings but no internal compiler error:

ipo: warning #11021: unresolved .st_coarray_variables_module_mp_nblkloc_caf_$205_V$2f521
        Referenced in /tmp/ipo_ifortPaAtRS.o
ipo: warning #11021: unresolved MPI_Barrier
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Comm_dup
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Put
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Get
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Isend
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Init
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Free_mem
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_unlock
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Alloc_mem
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Comm_size
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Abort
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Wait
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Recv
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Finalized
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Comm_rank
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_lock
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Finalize
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_free
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_set_errhandler
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_fence
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_create
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: remark #11000: performing multi-file optimizations
ipo-1: remark #11006: generating object file /tmp/ipo_ifortPaAtRS1.o
ipo-2: remark #11006: generating object file /tmp/ipo_ifortPaAtRS2.o
ipo-3: remark #11006: generating object file /tmp/ipo_ifortPaAtRS3.o
ipo-4: remark #11006: generating object file /tmp/ipo_ifortPaAtRS4.o

From the set of warning, I guess I got something wrong with my MPI installation, but I'm wondering why everything is ok for the 14 version but not for the 15 one.

Thanks for your feedback.

 

 

16 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

I should add that the file /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so is present.

Also, the variable "LD_LIBRARY_PATH" seems correct

$ echo $LD_LIBRARY_PATH:
/opt/intel/composer_xe_2015.0.090/compiler/lib/intel64:/opt/intel/composer_xe_2015.0.090/mpirt/lib/intel64:/opt/intel/composer_xe_2015.0.090/compiler/lib/intel64:/opt/intel/composer_xe_2015.0.090/mkl/lib/intel64:/opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64:/opt/intel/composer_xe_2013_sp1.3.174/mpirt/lib/intel64:/opt/intel/composer_xe_2013_sp1.3.174/ipp/../compiler/lib/intel64:/opt/intel/composer_xe_2013_sp1.3.174/ipp/lib/intel64:/opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64:/opt/intel/composer_xe_2013_sp1.3.174/mkl/lib/intel64:/opt/intel/composer_xe_2013_sp1.3.174/tbb/lib/intel64/gcc4.4:/opt/intel/composer_xe_2015.0.090/compiler/lib/intel64:/opt/intel/composer_xe_2015.0.090/mpirt/lib/intel64:/opt/intel/composer_xe_2015.0.090/compiler/lib/intel64:/opt/intel/composer_xe_2015.0.090/mkl/lib/intel64:

 

Please provide us with a test case including the complete command line used to invoke the compiler (and the link step). You can probably avoid the error for now by turning off -ipo.

The warnings seem to suggest that the Intel MPI library isn't being named on the link command line (ifort that generates the executable), maybe -coarray isn't on that line? I'm not 100% sure how this works on Linux - I expect Lorri will clue me in.

Steve - Intel Developer Support

The warnings can be ignored, and even may be disabled if you want.  -diag-disable=11021

The MPI library is never set on the link line - the MPI library comes in via libicaf.so, and that's all invisible to the IPO processing.

I agree with Steve though, it would be good to see a reproducer of the internal-compiler-error; those are never good.

           thanks -

 

                       --Lorri

 

 

Attached is a test case for my problem.

The problem has nothing to do with "ipo", but it is realted to the "static" option, which is impàlicitly assumed when using the "fast" option

Compiling the prog with options "-O3 -ipo" gives

$ make; ./a.out
ifort -O3 -ipo -c mymodule.f90 -o mymodule.o
ifort -O3 -ipo -c main.f90 -o main.o
ifort -O3 -ipo main.o mymodule.o -o a.out
ipo: remark #11000: performing multi-file optimizations
ipo: remark #11006: generating object file /tmp/ipo_iforteldr7h.o
[Main]: Normal terminaison

while the options "-O3 -ipo -static" give

$ make clean; make; ./a.out
ifort -O3 -ipo -static -c mymodule.f90 -o mymodule.o
ifort -O3 -ipo -static -c main.f90 -o main.o
ifort -O3 -ipo -static main.o mymodule.o -o a.out
ipo: remark #11000: performing multi-file optimizations
ipo: remark #11006: generating object file /tmp/ipo_ifort7ZOHF0.o
ld: cannot find -lm
ld: cannot find -lpthread
ld: cannot find -lc
ld: cannot find -ldl
ld: cannot find -lc
make: *** [a.out] Error 1

Is it possible that the ICE is somehow connected to the "ld" problem ?

 

Attachments: 

AttachmentSize
Downloadapplication/x-gzip problem_static_option.tar.gz596 bytes

I can't reproduce the ICE or your linking problem with the example you attached.

On Linux, -fast is equivalent to -ipo, -O3, -no-prec-div, -static, and -xHost

[pbkenned@dpdrknc01 problem_static_option]$ ifort -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 15.0.0.090 Build 20140723
Copyright (C) 1985-2014 Intel Corporation.  All rights reserved.

[pbkenned@dpdrknc01 problem_static_option]$ ifort -fast -c mymodule.f90 -o mymodule.o
[pbkenned@dpdrknc01 problem_static_option]$ ifort -fast -c main.f90 -o main.o
[pbkenned@dpdrknc01 problem_static_option]$ ifort -fast main.o mymodule.o -o U530441.x -L/usr/lib/x86_64-redhat-linux5E/lib64
[pbkenned@dpdrknc01 problem_static_option]$ ./U530441.x
[Main]: Normal terminaison
[pbkenned@dpdrknc01 problem_static_option]$

I had to add -L/usr/lib/x86_64-redhat-linux5E/lib64 to link against libm.a

Patrick

That for your reply.

Actually, I had some missing lib which were provided in the "glibc-static" package.

After installing them using "yum install glibc-static" (for fedora OS), everything went ok and the sample program could be compiled.

 

I tried to compile the program attached in the fist post with ifort version 14.0.3 and I've got the following errors:

$ make
ifort -fpp -fast -coarray main.o mymodule.o -o a.out
ipo: warning #11021: unresolved MPI_Barrier
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Comm_dup
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Put
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Get
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Isend
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Init
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Free_mem
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_unlock
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Alloc_mem
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Comm_size
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Abort
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Wait
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Recv
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Finalized
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Comm_rank
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_lock
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Finalize
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_free
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_set_errhandler
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_fence
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: warning #11021: unresolved MPI_Win_create
        Referenced in /opt/intel/composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
ipo: remark #11000: performing multi-file optimizations
ipo: remark #11006: generating object file /tmp/ipo_ifortou64ou.o
ld: ne peut trouver -licaf
make: *** [a.out] Erreur 1

The problem is that the ld command can't find the libicaf library.

I forgot to mentioned that I've compiled the fortran files with "-static -coarray"

I've look in the compiler directory for the library libicaf.a but I only found libicaf.so

$ cd /opt/intel/; find . -name libicaf.*
./composer_xe_2013_sp1.3.174/compiler/lib/ia32/libicaf.so
./composer_xe_2013_sp1.3.174/compiler/lib/intel64/libicaf.so
./composer_xe_2013_sp1.3.174/compiler/lib/mic/libicaf.so
./composer_xe_2015.0.090/compiler/lib/ia32/libicaf.so
./composer_xe_2015.0.090/compiler/lib/intel64/libicaf.so
./composer_xe_2015.0.090/compiler/lib/mic/libicaf.so
./composer_xe_2015.0.064/compiler/lib/ia32/libicaf.so
./composer_xe_2015.0.064/compiler/lib/intel64/libicaf.so
./composer_xe_2015.0.064/compiler/lib/mic/libicaf.so

Does this means that something wrong with the compiler installation ?

No - we don't provide a static version of libicaf.

Steve - Intel Developer Support

So, does this means I can't compiler a coarray program with either the -statis of -fast (which include -static) options ?

No - even with -static, some libraries are linked in shared form only.

Steve - Intel Developer Support

So, is my link-time error described on post#8 a installation issue ?

Here is ther error:

ld: cannot find -licaf

 

If you try to link with -static or -static-intel, it will fail, because there is no static version of libicaf.  There is no installation issue, it's just that there is only a dynamic version of the library.  You can't link a dynamic object statically.

Patrick

I think that's a driver bug - it shouldn't be trying to find libicaf.a. I will talk to the team about this.

Steve - Intel Developer Support

Leave a Comment

Please sign in to add a comment. Not a member? Join today