open-mpi / ompi

Open MPI main development repository
https://www.open-mpi.org
Other
2.19k stars 865 forks source link

Issue configuring openmpi 5.0.0 with ifort #12092

Open pierre-jeanne opened 1 year ago

pierre-jeanne commented 1 year ago

Thank you for taking the time to submit an issue!

Background information

I am woking with Ubuntu 22.04.3 LTS I am trying to configure openMPI 5.0.0 with ifort and icx. I have just installed intel oneapi toolkit and HPC. i tried configuring openmpi with: ./configure --prefix=/opt/openmpi-5.0.0 FC=ifort FFLAGS=-O2 CC=icx CFLAGS=-O2 --enable-static --disable-shared

and here is the message error in the configuration.log:

configure:28894: ifort -v >&5 ifort version 2021.11.0 configure:28905: $? = 0 configure:28894: ifort -V >&5 Intel(R) Fortran Intel(R) 64 Compiler Classic for applications running on Intel(R) 64, Version 2021.11.0 Build 20231010_000000 Copyright (C) 1985-2023 Intel Corporation. All rights reserved.

configure:28905: $? = 0 configure:28894: ifort -qversion >&5 ifort: command line warning #10006: ignoring unknown option '-qversion' ifort: command line error: no files specified; for help type "ifort -help" configure:28905: $? = 1 configure:28914: checking whether the compiler supports GNU Fortran configure:28928: ifort -c conftest.F >&5 conftest.F(3): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % [ . = => choke me ---------------^ conftest.F(3): error #6218: This statement is positioned incorrectly and/or has syntax errors. choke me -------^ compilation aborted for conftest.F (code 1) configure:28928: $? = 1 configure: failed program was: | program main

how can I fix that? Thanks,

Pierre

hppritcha commented 1 year ago

Did the configure process actually fail? What I see using the same ifort version in that area of the config.log is

configure:28914: checking whether the compiler supports GNU Fortran
configure:28928: ifort -c   conftest.F >&5
conftest.F(3): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % [ . = =>
       choke me
---------------^
conftest.F(3): error #6218: This statement is positioned incorrectly and/or has syntax errors.
       choke me
-------^
compilation aborted for conftest.F (code 1)
configure:28928: $? = 1
configure: failed program was:
|       program main
| #ifndef __GNUC__
|        choke me
| #endif
| 
|       end
configure:28938: result: no
configure:28946: checking whether ifort accepts -g
configure:28958: ifort -c -g  conftest.f >&5
configure:28958: $? = 0
configure:28967: result: yes
configure:29002: checking for BSD- or MS-compatible name lister (nm)
configure:29057: result: /usr/bin/nm -B
configure:29197: checking the name lister (/usr/bin/nm -B) interface
configure:29205: icc -c -DNDEBUG -O2 -finline-functions -restrict  conftest.c >&5
configure:29208: /usr/bin/nm -B "conftest.o"
configure:29211: output
0000000000000000 B some_variable
configure:29218: result: BSD nm
configure:29265: WARNING: Open MPI now ignores the F77 and FFLAGS environment variables; only the FC and FCFLAGS environment variables are used.
configure:29275: checking whether ln -s works
configure:29279: result: yes
configure:29341: checking if Fortran compiler works
configure:29373: ifort -o conftest    conftest.f  >&5
configure:29373: $? = 0
configure:29373: ./conftest
configure:29373: $? = 0
configure:29390: result: yes
configure:29418: checking for extra arguments to build a shared library
configure:29441: result: none needed
configure:29455: checking for ifort warnings flags
configure:29470: result: none
configure:29484: checking for Fortran flag to compile .f files
configure:29505: ifort -c   conftest.f >&5
configure:29505: $? = 0
configure:29515: result: none
configure:29541: checking for Fortran flag to compile .f90 files
configure:29562: ifort -c   conftest.f90 >&5
configure:29562: $? = 0
configure:29572: result: none
configure:29601: checking if Fortran compilers preprocess .F90 files without additional flag
configure:29611: ifort  -c conftest_f.F90
configure:29614: $? = 0
configure:29617: result: yes
configure:29653: checking to see if Fortran compilers need additional linker flags
configure:29729: result: none

its normal for some (many) configure tests to fail, but for most checks it should continue on.

pierre-jeanne commented 1 year ago

It did fail, but I was expecting to see the file mpifort created in /opt/openmpi/openmpi-5.0.0/bin/mpifort.

so because mpifort is not there, so I suppose the configuration didn't work ...

pierre-jeanne commented 1 year ago

Sorry, for not being very clear... yes it didn't fail. I have the exact same output as you. However, the file 'mpifort' was not created in the bin file and in need this file to compile something with PETSC.

jsquyres commented 1 year ago

@pierre-jeanne Can you send all the information listed in https://docs.open-mpi.org/en/v5.0.x/getting-help.html#for-problems-building-or-installing-open-mpi ?

hppritcha commented 1 year ago

if you trapped the output (not the config.log) from the configure did you see something like this near the end of that output:

Open MPI configuration:
-----------------------
Version: 5.0.0
MPI Standard Version: 3.1
Build MPI C bindings: yes
Build MPI Fortran bindings: mpif.h, use mpi, use mpi_f08
Build MPI Java bindings (experimental): no
Build Open SHMEM support: false (no spml)
Debug build: no
Platform file: (none)

in particular what was reported for Fortran bindings? Also, you can add

--enable-mpi-fortran

as a configure option and if for some reason configure doesn't think it can support fortran the configure will stop with hopefully a useful message about why fortran bindings aren't getting built.

pierre-jeanne commented 1 year ago

@hppritcha thank you for your help.

I tried to compiled it with --enable-mpi-fortran

the output is: open MPI configuration:

Version: 5.0.0 MPI Standard Version: 3.1 Build MPI C bindings: yes Build MPI Fortran bindings: mpif.h, use mpi, use mpi_f08 Build MPI Java bindings (experimental): no Build Open SHMEM support: false (no spml) Debug build: no Platform file: (none)

and still the file 'mpifort' was not created in the bin file

jsquyres commented 1 year ago

@pierre-jeanne Rather than go back and forth more times, can you send all the information listed in https://docs.open-mpi.org/en/v5.0.x/getting-help.html#for-problems-building-or-installing-open-mpi ?

pierre-jeanne commented 1 year ago

ompi-output.zip Hello @jsquyres thank you for helping me..here are the files

jsquyres commented 1 year ago

@pierre-jeanne It looks like your make failed pretty much immediately, so Open MPI didn't actually build:

make[5]: Entering directory '/home/.../Downloads/openmpi-5.0.0/3rd-party/openpmix/src/include'
depbase=`echo pmix_globals.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/bash ../../libtool  --tag=CC   --mode=compile icx -DHAVE_CONFIG_H -I. -I../../include   -iquote/home/...\
/Downloads/openmpi-5.0.0/3rd-party/openpmix -iquote/home/.../Downloads/openmpi-5.0.0/3rd-party/openpmix/src -\
I/home/.../Downloads/openmpi-5.0.0/3rd-party/openpmix/include   -DPMIX_PROXY_VERSION_STRING="\"4.2.7a1\"" -DP\
MIX_PROXY_BUGREPORT_STRING="\"https://github.com/openpmix/openpmix\"" -DNDEBUG  -O2 -fPIC -Wno-unused-paramet\
er -finline-functions -mcx16  -MT pmix_globals.lo -MD -MP -MF $depbase.Tpo -c -o pmix_globals.lo pmix_globals\
.c &&\
mv -f $depbase.Tpo $depbase.Plo
rm: cannot remove '.libs/pmix_globals.o': Permission denied
libtool: compile:  icx -DHAVE_CONFIG_H -I. -I../../include -iquote/home/.../Downloads/openmpi-5.0.0/3rd-party\
/openpmix -iquote/home/.../Downloads/openmpi-5.0.0/3rd-party/openpmix/src -I/home/.../Downloads/openmpi-5.0.0\
/3rd-party/openpmix/include -DPMIX_PROXY_VERSION_STRING=\"4.2.7a1\" -DPMIX_PROXY_BUGREPORT_STRING=\"https://g\
ithub.com/openpmix/openpmix\" -DNDEBUG -O2 -fPIC -Wno-unused-parameter -finline-functions -mcx16 -MT pmix_glo\
bals.lo -MD -MP -MF .deps/pmix_globals.Tpo -c pmix_globals.c  -fPIC -DPIC -o .libs/pmix_globals.o
error: unable to open output file '.libs/pmix_globals.o': 'Operation not permitted'
1 error generated.
make[5]: *** [Makefile:808: pmix_globals.lo] Error 1

Looks like some kind of permission problem. Perhaps you accidentally have some files owned by root, and you're building as a different user?

pierre-jeanne commented 1 year ago

No I am the only user... do you know how I can fix that?

jsquyres commented 1 year ago

If you're relatively new to the command line, the simplest thing might be to remove the Open MPI 5.0.0 source tree and start over from scratch (i.e., expand the Open MPI 5.0.0 tarball again, run configure again, and run make again).

I do note one thing, however: you said you ran ./configure --prefix=/opt/openmpi-5.0.0 FC=ifort FFLAGS=-O2 CC=icx CFLAGS=-O2 --enable-static --disable-shared, but your config.log file shows that you missed a space between these two arguments: --disable-shared--enable-mpi-fortran. Be careful of that -- missing that space means that those 2 arguments are effectively ignored.

Also, if your goal is to build static MPI applications, note that this is not for the meek; it can get fairly complicated. Be sure that this is what you actually want to do. You should read https://docs.open-mpi.org/en/v5.0.x/building-apps/building-static-apps.html.

jsquyres commented 1 year ago

@pierre-jeanne Did this address your question? Should we close this issue?