Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build error with Intel's MPI #229

Closed
PhilipVinc opened this issue Jan 16, 2019 · 3 comments
Closed

Build error with Intel's MPI #229

PhilipVinc opened this issue Jan 16, 2019 · 3 comments

Comments

@PhilipVinc
Copy link
Contributor

Hi

I'm trying to build MPI.jl on a small university cluster.
The cluster has MPI libraries from the Intel Compilers version 15. there is also gcc and clang installed.

I always get the same error while building gen_constants.f90, namely:

> CC=$(which icc) CXX=$(which icc) FC=$(which ifort) julia -e 'using Pkg; Pkg.add("MPI"); Pkg.build("MPI")'

-- The Fortran compiler identification is Intel 15.0.0.20140723
-- The C compiler identification is Intel 15.0.0.20140723
-- Check for working Fortran compiler: /opt/intel/composer_xe_2015.0.090/bin/intel64/ifort
-- Check for working Fortran compiler: /opt/intel/composer_xe_2015.0.090/bin/intel64/ifort  -- works
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Checking whether /opt/intel/composer_xe_2015.0.090/bin/intel64/ifort supports Fortran 90
-- Checking whether /opt/intel/composer_xe_2015.0.090/bin/intel64/ifort supports Fortran 90 -- yes
-- Check for working C compiler: /opt/intel/composer_xe_2015.0.090/bin/intel64/icc
-- Check for working C compiler: /opt/intel/composer_xe_2015.0.090/bin/intel64/icc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Git: /home/vicentinif/opt/local/bin/git (found version "2.15.0.rc1.65.g660fb3d")
-- Found MPI_C: /usr/local/openmpi-intel/lib/libmpi.so
-- Found MPI_Fortran: /usr/local/openmpi-intel/lib/libmpi_usempi_ignore_tkr.so;/usr/local/openmpi-intel/lib/libmpi_mpifh.so;/usr/local/openmpi-intel/lib/libmpi.so
-- Detecting Fortran/C Interface
-- Detecting Fortran/C Interface - Found GLOBAL and MODULE mangling
-- Looking for MPI_Comm_c2f
-- Looking for MPI_Comm_c2f - not found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/vicentinif/.julia/packages/MPI/U5ujD/deps/build
Scanning dependencies of target gen_constants
[ 11%] Building Fortran object CMakeFiles/gen_constants.dir/gen_constants.f90.o
/home/vicentinif/.julia/packages/MPI/U5ujD/deps/gen_constants.f90(43): error #6404: This name does not have a type, and must have an explicit type.   [MPI_NO_OP]
  call output("MPI_NO_OP       ", MPI_NO_OP)
----------------------------------^
compilation aborted for /home/vicentinif/.julia/packages/MPI/U5ujD/deps/gen_constants.f90 (code 1)
make[2]: *** [CMakeFiles/gen_constants.dir/gen_constants.f90.o] Error 1
make[1]: *** [CMakeFiles/gen_constants.dir/all] Error 2
make: *** [all] Error 2
[ Info: Attempting to create directory /home/vicentinif/.julia/packages/MPI/U5ujD/deps/build
[ Info: Changing directory to /home/vicentinif/.julia/packages/MPI/U5ujD/deps/build
ERROR: LoadError: failed process: Process(`make`, ProcessExited(2)) [2]
Stacktrace:
 [1] error(::String, ::Base.Process, ::String, ::Int64, ::String) at ./error.jl:42
 [2] pipeline_error at ./process.jl:705 [inlined]
 [3] #run#503(::Bool, ::Function, ::Cmd) at ./process.jl:663
 [4] run(::Cmd) at ./process.jl:661
 [5] run(::BinDeps.SynchronousStepCollection) at /home/vicentinif/.julia/packages/BinDeps/ZEval/src/BinDeps.jl:521 (repeats 3 times)
 [6] satisfy!(::BinDeps.LibraryDependency, ::Array{DataType,1}) at /home/vicentinif/.julia/packages/BinDeps/ZEval/src/dependencies.jl:944
 [7] satisfy!(::BinDeps.LibraryDependency) at /home/vicentinif/.julia/packages/BinDeps/ZEval/src/dependencies.jl:922
 [8] top-level scope at /home/vicentinif/.julia/packages/BinDeps/ZEval/src/dependencies.jl:977
 [9] include at ./boot.jl:317 [inlined]
 [10] include_relative(::Module, ::String) at ./loading.jl:1044
 [11] include(::Module, ::String) at ./sysimg.jl:29
 [12] include(::String) at ./client.jl:392
 [13] top-level scope at none:0
in expression starting at /home/vicentinif/.julia/packages/MPI/U5ujD/deps/build.jl:55
Configuring
`cmake -DCMAKE_INSTALL_PREFIX=/home/vicentinif/.julia/packages/MPI/U5ujD/deps/src -DCMAKE_LIB_INSTALL_PREFIX=/home/vicentinif/.julia/packages/MPI/U5ujD/deps/usr/lib ..`

This error happens also if I use the stock f95 compiler.
I'm not sure what the error is about.

@eschnett
Copy link
Contributor

It appears that the constant MPI_NO_OP is expected by Julia, but is not provided by the MPI library. You might need a newer version of the MPI library. I assume that this is defined in newer versions of the MPI standard, and your MPI library implements only an older version.

Alternatively, Julia could auto-detect whether this identifier is present, and if not, could disable the respective part of its interface.

@PhilipVinc
Copy link
Contributor Author

Thanks.

I tried getting rid of the various definitions of MPI_NO_OP and it does work indeed.

Are there plans to make auto-detect the available features? I saw that in #39 there were some talks about it, but in the end nothing was brought forward...

@simonbyrne
Copy link
Member

I have versioned the constants in #271, so hopefully this immediate problem should be fixed. The functions aren't versioned though, nor is any of it actually tested.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants