【问题标题】:How to code properly with MPI?如何使用 MPI 正确编码?
【发布时间】:2018-01-28 05:21:43
【问题描述】:

我正在尝试使用 MPI 进行编码,但是当我使用 gcc 编译时,我得到了这些 errors,我不知道如何解决。代码如下:

#include < stdio.h > 

  int main(int argc, char * argv[]) {
    int pid, pnr;
    int A[100000];
    int B[100000];
    int v0, v1, v2;

    MPI_Init( & argc, & argv);
    MPI_Comm_rank(MPI_COMM_WORD, & pid);
    MPI_COMM_size(MPI_COMM_WORD, & pnr);
    MPI_Status status;

    for (int i = 1; i < (100000 - 1); i++) {

      v1 = A[i - 1];
      MPI_Send( & v0, 1, MPI_INT, 0, 0, MPI_COMM_WORD);

      v2 = A[i + 1];
      MPI_Send( & v1, 2, MPI_INT, 0, 0, MPI_COMM_WORD);

      v3 = 2 * A[i];
      MPI_Send( & v0, 3, MPI_INT, 0, 0, MPI_COMM_WORD);

      if (pid == 0) {

        int v;

        for (int j = 1; j != pnr; i++) {
          MPI_Recv( & v, j, MPI_INT, MPI_ANY_SOURCE, 0,
            MPI_COMM_WORD, & status);

          if (MPI_SUCCESS) {

            B[i] = v;
          } else {
            MPI_Abort(MPI_COMM_WORD, 1);
          }

        }

      }

    }

    MPI_Finalize();

  }

我尝试过遵循这个 MPI send / recv tutorial 的结构,但显然做错了什么。

【问题讨论】:

  • 需要包含mpi头文件,需要用mpi编译器编译。
  • 你应该edit你的问题在问题本身中包含相关错误。
  • @Chiel:当我包含 mpi 标头时,它会显示 No such file or directory
  • @JonnyHenly:我做到了,我上传了我遇到的错误的屏幕截图
  • 可能您没有安装 MPI 库。安装 MPICH 或 OpenMPI。

标签: c mpi


【解决方案1】:

我认为您忘记在代码中包含 mpi.h 和可能的 stdlib.h。

将以下预处理器指令添加到代码顶部:

#include <mpi.h>
#include <stdlib.h>

您可以尝试指定 mpi.h 在您的计算机上的位置作为附加 gcc 参数,或者只是将 mpi.h 的副本放在您正在编译的同一目录中。如果您仍然收到此错误,那么您需要对 mpi.lib 或 .a 文件执行相同的步骤,以便可以正确链接所有内容。这将是与 gcc 链接的示例,其中 mpi 位于 user/local/lib 路径中。

gcc  <normal options>  -L/usr/local/lib/mpi -lmpi 

这里有一个使用不同 gcc compiler examples 的教程,可能也会有所帮助。

【讨论】:

    【解决方案2】:

    如前所述,您需要

    #include &lt;mpi.h&gt;

    此外,构建 MPI 应用程序的最“自然”方式是使用 MPI 包装器。 在您的情况下,将gcc 替换为mpicc,您将不必担心手动添加包含/库路径并链接到所需的库(这是依赖于 MPI 实现的 fwiw)

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 2012-03-17
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 2019-07-21
      相关资源
      最近更新 更多