macos - Cómo construir boost con soporte mpi en homebrew?
openmpi (3)
En caso de que esto ayude a alguien más a lo largo de la línea, aquí es cómo lo solucioné. El error principal es MPI auto-detection failed: unknown wrapper compiler mpic++
, cualquier tipeo de mpic ++ en la línea de comandos verificó que no funcionaba correctamente para mí. Utilicé brew para instalar open-mpi, pero el mismo error se mostraba en la salida detallada para instalar boost. Una racha de brew doctor
de brew doctor
demostró que openmpi no estaba conectado correctamente, así que arreglé esos errores y reran brew -v install boost --with-mpi --without-single
y finalmente construyó e instaló todas las librerías sin problema
De acuerdo con esta publicación ( https://github.com/mxcl/homebrew/pull/2953 ), la bandera " --with-mpi
" debería permitir el soporte de compilación boost_mpi para la fórmula de homebrew relacionada, por lo que estoy tratando de instalar el impulso a través de homebrew así:
brew install boost --with-mpi
Sin embargo, la biblioteca real de boost mpi no se está compilando y no se puede encontrar. Actualmente se está trabajando en esto, de acuerdo con: https://github.com/mxcl/homebrew/pull/15689
En resumen, actualmente puedo generar boost, pero parece que se está ignorando el indicador " --with-mpi
". ¿Podría alguien comprobar por favor, si pudiera construir impulso (con soporte mpi) en Mac OS X Mountain Lion (10.8)?
El resultado (detallado) genera estas líneas:
MPI auto-detection failed: unknown wrapper compiler mpic++
Please report this error to the Boost mailing list: http://www.boost.org
You will need to manually configure MPI support.
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
No estoy seguro de cómo puedo arreglar esto y hacer que las cosas de mpi se construyan, ¿alguna idea?
Solo hazlo funcionar en OSX 10.11.5. Probé cerveza, pero sin suerte.
Supongamos que ya tiene instalado gcc. Esto es lo que hice:
1. Encontrar y desactivar (pero no eliminar) clang
clang siempre causa dolores de cabeza. Habrían muchas advertencias al construir Boost.
which clang
, que debería darte /usr/bin/clang
Renombrarlo: sudo mv clang clang_mac_remove
, también para clang ++: sudo mv clang++ clang++_mac_remove
. Puede cambiar los nombres si los necesita en el futuro.
2. Instalar OpenMPI
Si ya instaló usando brew, desinstálelo primero. Debido a que habría utilizado clang como el envoltorio del compilador de forma predeterminada. Necesita cambiar el contenedor a gcc
.
Descargue el paquete.
Especifique el compilador del envoltorio para gcc
y g++
:
./configure CC=gcc CXX=g++ F77=ifort FC=ifort --prefix=/usr/local
A continuación puede tomar mucho tiempo.
make all
sudo make install
Referencia: https://wiki.helsinki.fi/display/HUGG/Open+MPI+install+on+Mac+OS+X
3. Instalar Boost MPI
Descargue el paquete.
Ejecute ./bootstrap.sh
(puede abrirlo primero y especificar el toolset
de toolset
a gcc
, de lo contrario, la opción predeterminada es darwin
para mac).
Agregar using mpi ;
en el archivo project-config.jam
. Entonces ./b2 —with-mpi
solo construirá la biblioteca mpi.
Entonces, todas las bibliotecas ~/Downloads/boost_1_61_0/stage/lib
se pueden encontrar en la carpeta ~/Downloads/boost_1_61_0/stage/lib
.
Copie o mueva a /usr/local/lib
o cualquier otra ruta de biblioteca de uso común.
Referencia: http://www.boost.org/doc/libs/1_61_0/doc/html/mpi/getting_started.html
4. Compilar con Boost MPI
BIBLIOTECA DIR = -L/usr/local/lib
INCLUIR = -I/usr/local/include/
LINKER = -lboost_mpi -lboost_serialization
p.ej
mpic++ -std=c++11 -I/usr/local/include/ -c boost_test.cpp -L/usr/local/lib -lboost_mpi -lboost_serialization
¡Buena suerte!
Para cualquiera que se encuentre con esto, el paquete migró a boost-python
y boost-mpi
separado de boost
. Utilice brew install boost-mpi