#231 OpenMPI uses different library directory on OpenSUSE

new
nobody
None
low
minor
havenottried
none
Linux
OpenSUSE 12
Intel
foam-extend-3.1
other
2014-06-05
2014-06-04
No

Compilation of the parallel Pstream-library fail on OpenSUSE 12 because libmpi.so etc are in $MPI_ARCH_PATH/lib64 instead of the expected $MPI_ARCH_PATH/lib

That is by compiling OpenMPI via ThirdParty/Allmake.stage2 . Ubuntu 14.04 and Centos6.5 move the library into the correct directory

This problem also breaks compilation of scotch and other libraries that depend on MPI

Possible solutions
- "Who uses Susi anyway?"
- symbolic link in $MPI_ARCH_PATH (current fix)
- hope that it gets better in OpenSUSE 13
---- steps_to_reproduce ----
cd vagrantSandbox
vagrant up opensuse12
vagrant ssh opensuse12
./bootstrapFoam.sh

Discussion

  • Just created a OpenSuse 13.1 box (that is the LTR). If the problem does not exist there I will retire this ticket

     
  • Symbolic link has to be created on OpenSUSe 13.1Œ as well

     
  • This strangely rings a bell....
    Let me check if I don't have a proper fix for this, outside of creating a symlink.

     
  • Here is a possible solution:

    In all the wmake rules' files mplib* (mplibOPENMPI, etc), we initialize the PINC and PLIBS "wmake variables" like this:

    PINC = $(PINC)
    PLIBS = $(PLIBS)

    Then, in the file etc/settings.sh or settings.csh, we assign default values to the two env. variables PINC and PLIBS like this:

    export PINC="-I$MPI_ARCH_PATH/include"ŒŒŒ # Default value
    export PLIBS="-L$MPI_ARCH_PATH/lib -lmpi"Π# Default value

    When using OpenMPI, both the PINC and PLIBS env. variables will be properly re-initialized using the "showme" option of mpicc, which should be very robust across various OSes. See the file etc/settings.shΠfor the details.

    I guess this can be adapted accordingly if one uses HPMPI, IntelMPI, MPICH, etc., and special care needs to be taken for the compiler or linker flags,

    This, I think, would be a very portable solution.

     
  • BTW: I worked around this for the time beeing in the bootstrap-script for the vagrant machines (generate a symlink)

    Some configurations (the wmake/rules/darwin* to be specific. I forgot about that) use their switches from "mpicc --showme:link" (incdirs, linkdirs) etc. Don't know if this is OpenMPI-specific

    I'd propose to make such a rules standard behaviour, but AFTER the release (it's OK to break the dev-version)