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

building open mpi with ifort

jivifair
Beginner
3,447 Views
Hi everyone,

I wish to use open-mpi for best performance of academic research.
I downloaded open-mpi 1.6 and ran on my terminal the command:

hugo@remotebatcomputer:~/openmpi-1.6$ ./configure --prefix=/usr/local/ FC=gnuplot

This step went out without problems. But, if I use:

hugo@remotebatcomputer:~/openmpi-1.6$ ./configure --prefix=/usr/local/ FC=ifort

This returned me the error:
**********************************************************************
* It appears that your Fortran compiler is unable to produce working
* executables. A simple test application failed to properly
* execute. Note that this is likely not a problem with Open MPI,
* but a problem with the local compiler installation. More
* information (including exactly what command was given to the
* compiler and what error resulted when the command was executed) is
* available in the config.log file in this directory.
**********************************************************************
configure: error: Could not run a simple Fortran program. Aborting.

How can I fix this??

As a comment, I cannot compile using only ifort. If I restart my computer
before compiling a program I must execute:

source /opt/intel/bin/compilervars.sh ia32

After this, the compiling process execute without problem.

P.D.
I'm a scientist student, not experimented on programation topics







0 Kudos
11 Replies
mecej4
Honored Contributor III
3,447 Views
After entering the "source ...compilervars.sh..." command, run the Configure script in the same shell. That way, the configure script will find the Intel compiler when it probes the computer to see if the specified Fortran compiler is useable.
0 Kudos
TimP
Honored Contributor III
3,447 Views
If you intend to run across a cluster, you will need to set up so that your shells open with your compiler and MPI paths set anyway, so it's probably good for you to practice adding the source compilervars to your shell startup. Think about what you will do when you update your installation and may need to edit this stuff.
Unless you own the entire cluster and will run only the one installation of OpenMP, it's a bad idea to configure that to install in /usr/local/ just to avoid setting the correct PATHs.
You really can't avoid dealing with some basic linux issues (or Windows.... as the case may be) if you are going into cluster computing.
Your results with OpenMPI will be only as good as the planning you put into it. OpenMPI is less automatic than some others. You have only to read the Intel ads to see how much it loses if you don't study the correct parameters. They have good FAQs on how to use Intel compilers. Consider them.
0 Kudos
jivifair
Beginner
3,447 Views
You're right, I done what you said and that went without problem.
Now I have a little nasty error if I execute "make all install"
So the installation is not fulfilled, any idea what's happening?

The message error is:
...
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/ompi/tools/ompi-profiler
CC ompi-profiler.o
ompi-profiler.c: In function main:
ompi-profiler.c:271: warning: ignoring return value of asprintf, declared with attribute warn_unused_result
ompi-profiler.c:276: warning: ignoring return value of asprintf, declared with attribute warn_unused_result
ompi-profiler.c:279: warning: ignoring return value of asprintf, declared with attribute warn_unused_result
CCLD ompi-profiler
Creating ompi-profiler.1 man page...
make[2]: se sale del directorio /home/hugo/openmpi-1.6/ompi/tools/ompi-profiler
make[1]: se sale del directorio /home/hugo/openmpi-1.6/ompi
Making all in test
make[1]: se ingresa al directorio /home/hugo/openmpi-1.6/test
Making all in support
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/test/support
make[2]: No se hace nada para all.
make[2]: se sale del directorio /home/hugo/openmpi-1.6/test/support
Making all in asm
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/test/asm
make[2]: No se hace nada para all.
make[2]: se sale del directorio /home/hugo/openmpi-1.6/test/asm
Making all in class
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/test/class
make[2]: No se hace nada para all.
make[2]: se sale del directorio /home/hugo/openmpi-1.6/test/class
Making all in threads
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/test/threads
make[2]: No se hace nada para all.
make[2]: se sale del directorio /home/hugo/openmpi-1.6/test/threads
Making all in datatype
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/test/datatype
make[2]: No se hace nada para all.
make[2]: se sale del directorio /home/hugo/openmpi-1.6/test/datatype
Making all in util
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/test/util
make[2]: No se hace nada para all.
make[2]: se sale del directorio /home/hugo/openmpi-1.6/test/util
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/test
make[2]: No se hace nada para all-am.
make[2]: se sale del directorio /home/hugo/openmpi-1.6/test
make[1]: se sale del directorio /home/hugo/openmpi-1.6/test
make[1]: se ingresa al directorio /home/hugo/openmpi-1.6
make[1]: No se hace nada para all-am.
make[1]: se sale del directorio /home/hugo/openmpi-1.6
Making install in config
make[1]: se ingresa al directorio /home/hugo/openmpi-1.6/config
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/config
make[2]: No se hace nada para install-exec-am.
make[2]: No se hace nada para install-data-am.
make[2]: se sale del directorio /home/hugo/openmpi-1.6/config
make[1]: se sale del directorio /home/hugo/openmpi-1.6/config
Making install in contrib
make[1]: se ingresa al directorio /home/hugo/openmpi-1.6/contrib
make[2]: se ingresa al directorio /home/hugo/openmpi-1.6/contrib
make[2]: No se hace nada para install-exec-am.
test -z "/usr/local/share/openmpi/amca-param-sets" || /bin/mkdir -p "/usr/local/share/openmpi/amca-param-sets"
/bin/mkdir: no se puede crear el directorio /usr/local/share/openmpi: Permiso denegado
make[2]: *** [install-dist_amca_paramDATA] Error 1
make[2]: se sale del directorio /home/hugo/openmpi-1.6/contrib
make[1]: *** [install-am] Error 2
make[1]: se sale del directorio /home/hugo/openmpi-1.6/contrib
make: *** [install-recursive] Error 1
0 Kudos
TimP
Honored Contributor III
3,447 Views
Did you use
sudo make install
or equivalent? It looks like you didn't gain write permission on your designated install directories. I hope your Spanish is better than mine, if you chose to set your linux environment that way.
0 Kudos
rreis
New Contributor I
3,447 Views
/configure --prefix=/usr/local/

If this is your machine (or you know your root password) you can do

su -c "make install"

or

sudo make install

to install openmpi. If not, you can choose another directory where you have write permissions. ~/bin or something of the kind, like:

/configure --prefix=/home/hugo/openmpi

for instance...


On another note, if youre you Linux, what distribution are you using?
0 Kudos
jivifair
Beginner
3,447 Views
It appears that I have a problem using the "sudo" prefix, when I do this I get:

sudo: unable to resolve host

I search on the net and the solution that I found was to edit the script hosts, I
changed the line:

#127.0.1.1 ubuntu.ubuntu-domain ubuntu

For:

127.0.1.1 ubuntu

Then I rebooted my pc but I still get the same problem. How can I fix this?

I'm using:
Ubuntu 10.04, If I call recall right...







0 Kudos
TimP
Honored Contributor III
3,447 Views
If you aren't set up for sudo, you (or an administrator) must add you to the list in /etc/sudoers.
As suggested, if you can't gain privilege in /usr/local, you should reconfigure openmpi so as to install where you do have privilege.
0 Kudos
jivifair
Beginner
3,447 Views
I tried all the four options:

sudo make install
sudo make all install
su -c "make all install"

and the last was...

./configure --prefix=/home/hugo/openmpi

and then...
sudo make all install

The last piece of the error message is:
=======================================================================
make all-recursive
make[3]: se ingresa al directorio /home/hugo/openmpi-1.6/ompi/mpi/f90
Making all in scripts
make[4]: se ingresa al directorio /home/hugo/openmpi-1.6/ompi/mpi/f90/scripts
make[4]: No se hace nada para all.
make[4]: se sale del directorio /home/hugo/openmpi-1.6/ompi/mpi/f90/scripts
make[4]: se ingresa al directorio /home/hugo/openmpi-1.6/ompi/mpi/f90
./scripts/mpi_sizeof.f90.sh /home/hugo/openmpi-1.6/ompi/mpi/f90 > mpi_sizeof.f90
FC mpi_sizeof.lo
fortcom: No such file or directory
ifort: error #10273: Fatal error in fortcom, terminated by 0x64
make[4]: *** [mpi_sizeof.lo] Error 1
make[4]: se sale del directorio /home/hugo/openmpi-1.6/ompi/mpi/f90
make[3]: *** [all-recursive] Error 1
make[3]: se sale del directorio /home/hugo/openmpi-1.6/ompi/mpi/f90
make[2]: *** [all] Error 2
make[2]: se sale del directorio /home/hugo/openmpi-1.6/ompi/mpi/f90
make[1]: *** [all-recursive] Error 1
make[1]: se sale del directorio /home/hugo/openmpi-1.6/ompi
make: *** [all-recursive] Error 1

======================================================================

And I can notice the lines:

fortcom: No such file or directory
ifort: error #10273: Fatal error in fortcom, terminated by 0x64

But I executed previously the command: source ifortvars.sh ia32!

Now I'm lost, I don't know if the current problem is with the sudo topic or it has something to do with the INtel compiler :S







0 Kudos
TimP
Honored Contributor III
3,447 Views
You may have to set the ifort environment under sudo, e.g.
sudo su -
...
source ifortvars....
make install

0 Kudos
Steven_L_Intel1
Employee
3,447 Views
The "no such file or directory" is saying that it cannot locate mpi_sizeof.lo, whatever that is. It is not that the compiler could not be found.
0 Kudos
jivifair
Beginner
3,447 Views
If I ignore all these building mpi warnings and I compile my program I get

mpif90: error while loading shared libraries: libopen-pal.so.4: cannot open shared object file: No such file or directory

But I know that the file is there because if I type:

hugo@remotebatcomputer:~/Documentos/proyecto-maestria/program_29_may_12$ whereis libopen-pal.so.4
libopen-pal.so: /usr/local/lib/libopen-pal.so.4 /usr/local/lib/libopen-pal.so

And I know the path to the library is right because on my makefile I have:

MPI_LIBS = -L/usr/local/lib -lmpi_f90 -lmpi_f77 -lmpi -lopen-rte -lopen-pal -llibopen-pal -lutil \
-L/opt/homebrew/lib

How can I tell to the mpi compiler where is this file?

By the way, I tried on my shell:

hugo@remotebatcomputer:~/Documentos/proyecto-maestria/program_29_may_12$ echo $PATH
/opt/intel/composer_xe_2011_sp1.10.319/bin/ia32:/home/hugo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/lib/:/usr/local/bin/:/opt/intel/composer_xe_2011_sp1.10.319/mpirt/bin/ia32

I added manually to my path the directories /usr/local/lib and /usr/local/bin
Still I'm getting the not found problem





















0 Kudos
Reply