【发布时间】:2010-10-19 13:10:01
【问题描述】:
我有一个可以使用 MPI 支持编译的 C++ 代码,具体取决于 某些预处理器标志;缺少适当的标志,来源 编译成非并行版本。
我想设置 Makefile.am 以便它编译 both
MPI 并行和顺序版本,如果可以选择
./configure 已给出。
这里有一个问题:MPI 有自己的 C++ 编译器包装器,并且坚持 使用它而不是标准来编译和链接源 C++ 编译器。如果我要自己编写 Makefile,我将不得不 做这样的事情:
myprog.seq: myprog.cxx
$(CXX) ... myprog.cxx
myprog.mpi: myprog.cxx
$(MPICXX) -DWITH_MPI ... myprog.cxx
有没有办法告诉 automake 它必须改用 $(MPICXX) 编译启用 MPI 的程序版本时的 $(CXX)?
【问题讨论】:
-
您是否关心串行程序是否与“同时构建”情况下的 MPI 库链接?如果没有,您可以同时使用 mpicxx —— 它不会伤害任何东西。如果您不构建 mpi 版本,则可以为所有内容设置使用 g++。根据经验,这是许多同时具有并行和串行版本的软件包似乎都在做的事情——我想到了 hdf5。
-
一般来说不会,我以前也是这样编译的。不过,我开发了一些 PMPI 工具,通常您不想将拦截器库链接到 MPI,如果您使用 mpicc 编译,您将不得不这样做。