2015-01-13 11 views
5

Per impostazione predefinita, brew install openmpi utilizza clang per creare il proprio wrapper.Come creare openmpi con homebrew e gcc-4.9?

Devo specificare gcc-4.9 (Homebrew installato) per il wrapper.

ho cercato

$export CC=gcc-4.9 
$brew install openmpi 

$brew install --cc=gcc-4.9 openmpi 

$brew install --with-gcc49 openmpi 

$brew install -CC=gcc-4.9 -CXX=g++-4.9 -FC=gfortran -F77=gfortran openmpi 

$brew install openmpi --cc=gcc-4.9 

$brew install openmpi --CC=gcc-4.9 --CXX=g++-4.9 --FC=gfortran --F77=gfortran 

Infine, ho modificato il openmpi formula aggiungendo:

args = %W[ 
    CC=gcc-4.9 
    CXX=g++-4.9 
    FC=gfortran 
    F77=gfortran 

ho ancora

$mpicc --showme 
clang -I/usr/local/Cellar/open-mpi/1.8.4/include -L/usr/local/opt/libevent/lib -L/usr/local/Cellar/open-mpi/1.8.4/lib -lmpi 
+0

Perché non lo installate semplicemente dalla sorgente? –

+0

Voglio imparare come impostare il compilatore anche per altri pacchetti – ilciavo

+0

La mia ipotesi è che quello che hai fatto per modificare la ricetta homebrew sia corretto e stai solo vedendo i risultati di una vecchia installazione. Almeno mi sta bene. –

risposta

7

Infine è stato risolto nel seguente modo:

1) Aggiungere le variabili d'ambiente per homebrew (è anche possibile aggiungere queste righe al ~\.bashrc):

export HOMEBREW_CC=gcc-4.9 
export HOMEBREW_CXX=g++-4.9 

2) Ricostruire e reinstallare openmpi e le sue dipendenze da fonte

brew reinstall openmpi --build-from-source 

3) Alla fine si otterrà un messaggio del tipo:

==> Reinstalling open-mpi 
==> Using Homebrew-provided fortran compiler. 
This may be changed by setting the FC environment variable. 
==> Downloading http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8. 
Already downloaded: /Library/Caches/Homebrew/open-mpi-1.8.4.tar.bz2 
==> ./configure --prefix=/usr/local/Cellar/open-mpi/1.8.4 --disable-silent-rules 
==> make all 
==> make check 
==> make install 
Warning: open-mpi dependency gcc was built with a different C++ standard 
library (libstdc++ from clang). This may cause problems at runtime. 
    /usr/local/Cellar/open-mpi/1.8.4: 785 files, 23M, built in 41.2 minutes 

$mpicc --showme 
gcc-4.9 -I/usr/local/Cellar/open-mpi/1.8.4/include -L/usr/local/opt/libevent/lib -L/usr/local/Cellar/open-mpi/1.8.4/lib -lmpi 

Sul mio MacBook ho avuto alcuni conflitti con XCode 6.2, che sono stati risolti dopo 01.237.310,321 mila

Tuttavia, ho deciso di rimanere con la versione clang per evitare problemi con gfortran.

+0

Perché hai deciso di stare con clang per evitare problemi con gfortran? Non ho questa affermazione. – Chiel

+0

@Chiel Ho avuto problemi con la creazione di 'openmpi' e' gfortran', costruendo 'openmpi' con' clang' inibito 'gfortran' – ilciavo

+0

Ha funzionato perfettamente per me, senza problemi! E la nostra applicazione MPI esegue un * lotto * più veloce (~ 30%) quando si usa openMPI compilato con GCC invece di openMPI con clang. – Bart