c - 为什么我需要使用 mpicc

标签 c linux mpi openmpi

我使用的是 Arch Linux。在我在 Windows 上使用 msmpi 之前,我不需要提供任何特定的编译器,只需提供常用的库,包括标志。看起来 openmpi 是 Arch Linux 上唯一可用的实现,不是吗?我需要为此目的使用特殊的(即使它只是 gcc 的包装器)mpicc 编译器的原因是什么?我只是总是对使用一些包装器(围绕典型的做法的技巧)持怀疑态度,这就是为什么我想知道是否有一种方法可以摆脱 mpicc 并在没有这个包装器的情况下使用 openmpi 实现。

最佳答案

首先,Open MPI 并不是 Linux 上唯一可用的实现。您还可以使用 MPICH、Intel MPI 等。

其次,对于任何 MPI 实现,您不必使用编译器包装器,如果您这样做,它只会使编译代码变得更简单。如果您愿意,欢迎您展开包装并自行将所有适当的内容放入命令行中。根据您的实现情况,有多种方法可以实现这一点。

对于 MPICH,您可以使用 mpichversion,它将向您显示 MPICH 的编译方式,以及调用 mpicc 时使用的任何标志。

更新:我本来应该指出这一点的。强烈建议仅使用 wrapper 。有时,实现会改变这些包装器的功能,如果您不使用它们,可能会导致一切崩溃。因此,除非您有充分的理由不这样做,否则使用它们会更安全。如果您不信任他们,请时不时地查看一下他们。所有代码都是开源的。

关于c - 为什么我需要使用 mpicc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26852319/

相关文章:

c# - 如何从指针地址获取对象

c - Openmp。如何检索线程正在运行的核心 ID

c - Emscripten 因未解析的 mcount 符号引发异常

fortran - 复制 MPI 派生类型与将一种类型设置为等于另一种类型

c - 函数指针的大小取决于哪些参数?

linux - 来自 linux 中重新分配变量的回显值

c - 内存泄漏,段错误,C

linux - 调用fork后什么时候创建用户空间栈?

macos - 如何在 Homebrew 软件上构建带有 mpi 支持的 boost?

c - MPI 向工作人员发送信息时出现问题