macos boost mpi homebrew openmpi

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