11

OpenMPI强烈建议使用他们的包装编译器。在幕后,他们的包装编译器 mpiCC 调用 gcc(默认情况下?)并添加 MPI 代码编译所需的标志。然而,其他编译器提供比 gcc 更多的描述性错误消息(例如也与 GCC 兼容的clang )。所以,我希望能够在 Open MPI 中使用 clang。

我试过:

1) 找到一个 mpiCC 选项来指定编译器,但是

mpiCC --help

只是吐出 g++ 帮助页面。

2) 使用 --showme:compile 选项

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

它不是调用 gcc,而是打印编译 MPI 代码所需的标志。然后我可以将它们与 clang 一起使用(因为它与 GCC 兼容)。这应该可行,但我正在寻找更简单的解决方案。

4

2 回答 2

16

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++。

于 2013-01-22T17:35:49.087 回答
2

如 OpenMPI 的官方常见问题解答中所述,在 中设置OMPI_CC=clangOMPI_CXX=clang++作为环境变量对我不起作用。.bashrc每当我使用时,我都必须将它们附加在前面mpicc,例如

OMPI_CC=clang mpicc --showme:command

所以在Makefile,我设置CC=OMPI_CC=clang mpicc,这对我很有效。

于 2015-09-09T22:06:24.340 回答