2013-01-22 62 views
6

OpenMPI strongly recommendsラッパーコンパイラを使用します。その背後で、ラッパーコンパイラmpiCCはgcc(デフォルトは?)を呼び出し、MPIコードに必要なフラグを追加してコンパイルします。しかし、他のコンパイラは、gccよりも説明的なエラーメッセージを出します(例えば、clangもGCC互換です)。ですから、私はOpen MPIでclangを使用できるようにしたいと考えています。 Open MPIでclangを使用する簡単な方法はありますか?

は、私が試した:

1)コンパイラを指定するmpiccのオプションを見つけることが、

mpiCC --help 

がちょうどG ++ヘルプページを出してくれる。 --showmeを使用して

2):オプションの代わりにgccのを呼び出すのでは、MPIコードをコンパイルするために必要なフラグを出力し、

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

コンパイルします。私はclangでそれらを使うことができます(GCCと互換性があるので)。これはうまくいくはずですが、私は簡単な解決策を探しています。

答えて

9

Open MPI FAQには、ラッパーによって呼び出されるコンパイラのデフォルトの選択を無効にするために、どの環境変数を設定できるかが記載されています。

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

OpenMPIのバージョンによっては、OMPI_CXX=clang++OMPI_MPICC=clangを設定する必要があります。 OpenMPI v.1.1以降ではOMPI_CXXを使用し、ラッパーコンパイラを呼び出します。ラッパーはclang ++を順番に呼び出します。

-1

.bashrcの環境変数にOMPI_CC=clangまたはOMPI_CXX=clang++を設定すると、OpenMPIの公式FAQに記載されているように、私のために働いていません。 mpiccを使用するたびに、それらを先に添付する必要があります。

OMPI_CC=clang mpicc --showme:command 

だからMakefileに、私は私のためにうまく機能CC=OMPI_CC=clang mpiccを設定します。

+0

変数をエクスポートしましたか? – Rufflewind

+0

@Rufflewindはい、私のMac(OS X 10.10)では動作しません。ところで、私は '.bashrc'の代わりに' .profile'を使ってbashを設定しています(ある理由で、私は忘れてしまった)。たぶんこれが理由です。 – oracleyue

+0

'〜/ .bash_profile'や'〜/ .bash_login'が既に存在する場合、Bashは '〜/ .profile'を読みません。 – Rufflewind

関連する問題