我使用的是 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/