2013-01-22 12 views
6

OpenMPI strongly recommends utilizzando i loro compilatori wrapper. Dietro le quinte, il loro compilatore di wrapper mpiCC chiama gcc (di default?) E aggiunge i flag necessari per la compilazione del codice MPI. Tuttavia, altri compilatori forniscono messaggi di errore più descrittivi rispetto a gcc (ad esempio clang che è anche compatibile con GCC). Quindi, mi piacerebbe essere in grado di usare clang con Open MPI.C'è un modo semplice per usare clang con Open MPI?

ho provato:

1) trovare un'opzione mpiCC per specificare il compilatore, ma

mpiCC --help 

solo sputa fuori la pagina di aiuto g ++.

2) utilizzando il --showme: compilare opzione

mpiCC --showme:compile ./test-boost.cc -lboost_mpi -lboost_serialization -o test-boost 

che, invece di chiamare gcc, stampa i flag necessari per la compilazione del codice MPI. Posso quindi usare quelli con clang (dato che è compatibile con GCC). Questo dovrebbe funzionare, ma sto cercando una soluzione più semplice.

risposta

9

Open MPI FAQ indica quali variabili ambientali possono essere impostate per ignorare la scelta predefinita del compilatore chiamata dal wrapper.

http://www.open-mpi.org/faq/?category=mpi-apps#override-wrappers-after-v1.0

A seconda della versione di OpenMPI è necessario impostare OMPI_CXX=clang++ o OMPI_MPICC=clang. Per OpenMPI v.1.1 e versioni successive utilizzare OMPI_CXX e quindi chiamare il compilatore wrapper. Il wrapper chiamerebbe clang ++ a sua volta.

-1

L'impostazione OMPI_CC=clang o OMPI_CXX=clang++ come variabili di ambiente in .bashrc, come descritto nella FAQ ufficiale di OpenMPI, NON funziona per me. Devo collegarli in anticipo ogni volta che uso mpicc, ad es.

OMPI_CC=clang mpicc --showme:command 

Quindi, in Makefile, ho impostato CC=OMPI_CC=clang mpicc, che funziona bene per me.

+0

Hai esportato le variabili? – Rufflewind

+0

@Rufflewind Sì, ma non funziona sul mio Mac (OS X 10.10). A proposito, io uso '.profile' per configurare bash, invece di' .bashrc' (per alcuni motivi, ho dimenticato). Forse questa è la ragione. – oracleyue

+0

Bash non legge '~/.profile' se' ~/.bash_profile' o '~/.bash_login' sono già presenti. – Rufflewind

Problemi correlati