file not recognized: File format not recognized file not recognized: File format not recognized

I'm trying to compile the test.f90 file included in the intel MPI distribution. I'm receiving the fllowing error:

837 fischega@susedev1[~/tmp/impi_test]> mpiifort -o myprog test.f90
/tools/intel/impi/ file not recognized: File format not recognized

This is an x86_64 system:

839 fischega@susedev1[~/tmp/impi_test]> uname -a
Linux susedev1 #1 SMP Tue May 6 12:41:02 UTC 2008 x86_64 x86_64 x86_64 GNU/Linux

Here is the mpiifort -V output:

840 fischega@susedev1[~/tmp/impi_test]> mpiifort -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version Build 20121010
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.

I am sourcing the following files in my .bashrc:

export I_MPI_F90=ifort
export I_MPI_CC=icc
. /tools/intel/impi/
. /tools/intel/icsxe/2013.0.028/bin/ intel64
. /tools/intel/composerxe/bin/ intel64

Does anyone know why I am encountering this error and how to fix it?


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

Hey Greg,

Can you do a quick "ls -l ./tools/intel/icsxe/2013.0.028"?  I wonder if the PATHs are being mixed up somehow.

There's also no need for you to source all of these scripts.  The script already does the MPI and the Compose XE scripts for you.  Unless you have a newer version of either component installed, I'd recommend just leaving the and deleting the other two.


Hi Gergana,

I changed my .bashrc to only source the script, but it did not solve the problem.  Here is the result of the "ls -l /tools/intel/icsxe/2013.0.028" command:

1004 fischega@susedev1[~/tmp/impi_test]> ls -l /tools/intel/icsxe/2013.0.028
total 84
lrwxrwxrwx 1 root root    29 2013-01-18 15:53 advisor_xe -> /tools/intel/advisor_xe_2013/
drwxr-xr-x 2 root root    83 2013-07-23 11:24 bin
lrwxrwxrwx 1 root root    36 2013-01-18 15:53 composer_xe -> /tools/intel/composer_xe_2013.1.117/
drwxr-xr-x 4 root root  4096 2013-01-18 15:53 doc
-rw-r--r-- 1 root root  1010 2012-10-19 07:35 icsxesupport.txt
-rwxr-xr-x 1 root root  3045 2013-01-18 15:53 ictvars.csh
-rwxr-xr-x 1 root root  2928 2013-07-23 11:24
lrwxrwxrwx 1 root root    23 2013-01-18 15:53 imb -> /tools/intel/imb/3.2.4/
lrwxrwxrwx 1 root root    31 2013-01-18 15:53 inspector_xe -> /tools/intel/inspector_xe_2013/
lrwxrwxrwx 1 root root    28 2013-01-18 15:53 itac -> /tools/intel/itac/
lrwxrwxrwx 1 root root    28 2013-01-18 15:53 mpi -> /tools/intel/impi/
drwxr-xr-x 2 root root    38 2013-01-18 15:53 release_notes
-rwxr-xr-x 1 root root 68416 2012-10-19 07:35
lrwxrwxrwx 1 root root    37 2013-01-18 15:53 vtune_amplifier_xe -> /tools/intel/vtune_amplifier_xe_2013/


Thanks, Greg.  I'm not seeing anything wrong here.  The error is indicative of some sort of 32bit vs. 64bit incompatibility although all of your commands seems fine.

Just in case, can you do: "file /tools/intel/impi/"?  It might tell you it's a symlink so do the "file" command on the symlink pointer as well.

Also, try your compile command with -show at the end:

$ mpiifort -o myprog test.f90 -show

That'll tell me exactly what libs are being linked in.  Can you also compile a non-MPI program using ifort?

Just trying to isolate whether the issue is with the compiler or the MPI library.


Here is the result of "file /tools/intel/impi/":

/tools/intel/impi/ symbolic link to `'

When I use the "show" flag, I see the following:

ifort -ldl -o myprog test.f90 -I/tools/intel/impi/ -I/tools/intel/impi/ -L/tools/intel/impi/ -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker /tools/intel/impi/ -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/4.1 -lmpi -lmpigf -lmpigi -lrt -lpthread

 The "/opt/intel/mpi-rt/4.1" is suspicous, since that location does not exist on the filesystem. 

Yes, non-MPI programs can be compiled without problems.



I think you have a version of the compiler which didn't respect MPI paths (not even Intel MPI) if you set the compiler path afterwards.  More recent compilers are intended not to put the co-array support library on LD_LIBRARY_PATH when Intel MPI is already set up; of course, you can over-rule the co-array support by setting up MPI paths afterwards.

I tried adding the following paths to the beginning of my LD_LIBRARY_PATH, but the problem still persists:


The LD_LIBRARY_PATH appears to contain a number of paths that do not exist:


Are these components that need to be installed?  If so, what instructions should I give to my system administrator?

If you're trying to run on the MIC coprocessor, you must install the MPSS (linux for coprocessor), but I would advise you not to use such an old compiler with MPI and MIC; anyway, I don't think that version supports co-arrays on MIC.  If you want to run full MPI rather than the ifort co-array support, you must install MPI separately.  By default, the script to set Intel MPI paths would install in /opt/intel/impi/<version>/bin64/mpivars.[c]sh.

You would not expect the sysadmin to set your paths for you unless it is done by installing module when you would still need to run the module command with your desired option.

I'm not trying to run on the MIC coprocessor, so it sounds like the libraries ("mic/coi" and "mic/myo") are not applicable to my situation.  Does your instruction of installing MPI separately only to use of the MPI with the MIC coprocessor?  My understanding is that I should be able to link against Intel MPI "out of the box".

Is there anything else I can try to resolve the "/tools/intel/impi/ file not recognized: File format not recognized" error?

Leave a Comment

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