如何强制 OpenMPI 使用 GCC 而不是 ICC?是不是需要重新编译 OpenMPI?

Posted

技术标签:

【中文标题】如何强制 OpenMPI 使用 GCC 而不是 ICC?是不是需要重新编译 OpenMPI?【英文标题】:How to force OpenMPI to use GCC instead of ICC? Is recompiling OpenMPI necessary?如何强制 OpenMPI 使用 GCC 而不是 ICC?是否需要重新编译 OpenMPI? 【发布时间】:2011-03-22 03:41:55 【问题描述】:

我有一个为gcc 编写的用于并行计算的 C 代码,我想在一个集群上编译它,它显然通过mpicc 使用icc。将代码更正为icc-friendly 似乎太费时间了,所以我想知道是否可以要求OpenMPI 改用gcc。我没有该集群的管理员权限,实际上我更希望不要弄乱原始配置。

如果无法设置,例如Makefile,那么我希望可以在我的主目录中编译OpenMPI,但我需要一些指导,说明之后必须做什么。你能帮帮我吗?


更新1

Makefile 包含

CC = mpicc
CFLAGS += -DMPI

这里有一些 OpenMPI 文件

$ which mpicc
/usr/bin/mpicc

lrwxr-xr-x  /usr/bin/mpicc -> opal_wrapper
-rwxr-xr-x  /usr/bin/opal_wrapper

如果我可以为您提供更多信息,请告诉我。


更新2

使用help of Jeff,我能够找到mpiccOpenMPI 设置

$ more /usr/local/share/openmpi/mpicc-wrapper-data.txt 
project=Open MPI
project_short=OMPI
version=1.1.4
language=C
compiler_env=CC
compiler_flags_env=CFLAGS
compiler=icc
extra_includes= openmpi
preprocessor_flags= 
compiler_flags=-pthread 
linker_flags=    
libs=-lmpi -lorte -lopal   -ldl   -Wl,--export-dynamic -lnsl -lutil -ldl 
required_file=

但是,我无权编辑此文件,OPMI_CC = gcc 不会更改编译器。


UPDATE3

环境变量CC = gcc 没有帮助

$ export CC=gcc
$ echo $CC
gcc
$ make clean $$ make
...icc:...errors

UPDATE4

...但是export OMPI_CC=gcc 终于有帮助了(thanks to sharth)。我总有一天会记住这些是不同的东西......

尽管创建了二进制文件,但我收到了以下再见消息

/opt/intel/fce/9.1.036/lib/libimf.so: warning: warning: feupdateenv is not implemented and will always fail

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

尝试将环境变量 CC 设置为 gcc。

csh:  setenv CC gcc
bash: export CC=gcc

【讨论】:

MakefileCC = mpiccCFLAGS += -DMPI。否则,我不会得到mpi 接口。对吗? @Andrei:那些不是环境变量。你想要这些以及设置我上面建议的环境变量。 好的,我明白我的错误了。我刚刚按照您的建议尝试了,它仍然是icc。您可以看看 Jeff 建议的页面吗?我按照它说的做吗? 宾果游戏,现在可以了。您帮助我意识到 OMPI_CC 应该设置在 Makefile 之外 @Andrei:在我更改答案时,您已勾选我的答案。如果我要在此处打上“正确答案”标记,那么我认为它至少应该是正确答案。

以上是关于如何强制 OpenMPI 使用 GCC 而不是 ICC?是不是需要重新编译 OpenMPI?的主要内容,如果未能解决你的问题,请参考以下文章

在 Solaris Sparc 下的 ./configure 中强制使用 gcc 编译(而不是 cc)

如何在 GCC 下强制设置“布尔”的大小

编译并运行 OpenMPI 程序

gcc警告分配使指针从整数而不进行强制转换[重复]

错误:libtool - 编译 MPI 程序时

安装openmpi-3.1.0