2013-01-22 77 views
6

OpenMPI strongly recommends使用它們的包裝器編譯器。在幕後,它們的包裝編譯器mpiCC調用gcc(默認情況下?)併爲MPI代碼添加必要的標誌以進行編譯。但是,其他編譯器給出的描述性錯誤信息比gcc更多(例如clang也是GCC兼容的)。所以,我希望能夠在Open MPI中使用clang。在Open MPI中使用clang有沒有簡單的方法?

我想:

1)找到用於指定編譯器的mpiCC選項,但

mpiCC --help 

剛剛吐出來的是G ++幫助頁面。使用--showme

2):編譯選項

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

其中,而不是調用GCC,打印所需要的編譯代碼MPI的標誌。然後我可以使用那些clang(因爲它是GCC兼容的)。這應該可行,但我正在尋找更簡單的解決方案。

回答

9

打開MPI常見問題說明可以設置哪些環境變量來覆蓋由包裝器調用的編譯器的默認選擇。

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

設置OMPI_CC=clangOMPI_CXX=clang++作爲.bashrc中的環境變量(如OpenMPI的官方FAQ中所述)不適用於我。無論何時我使用mpicc,例如

OMPI_CC=clang mpicc --showme:command 

所以在Makefile,我設置CC=OMPI_CC=clang mpicc,這對我來說效果很好。

+0

您是否輸出變量? – Rufflewind

+0

@Rufflewind是的,但它不適用於我的Mac(OS X 10.10)。順便說一下,我使用'.profile'來配置bash,而不是'.bashrc'(由於某些原因,我忘記了)。也許這就是原因。 – oracleyue

+0

如果〜/ .bash_profile或'〜/ .bash_login'已經存在,Bash不會讀取'〜/ .profile'。 – Rufflewind

相關問題