【问题标题】:Compiling an MPI C program with a make file使用 make 文件编译 MPI C 程序
【发布时间】:2021-11-23 21:38:31
【问题描述】:

我有一个运行良好的 C MPI 程序,但我的挑战是使用 Makefile 编译它。 C 文件名为 frequencyMPI.c,我已经起草了名为 makefile.frequencyMPI 的 Make 文件。 makefile 在 Linux 终端上成功编译,但我不知道如何运行它。我的问题是如何运行它以及它是否正确。 Makefile的内容如下:

all: program

program: frequencyMPI.o
    mpicc frequencyMPI.o -o program

frequencyMPI.o: frequencyMPI.c
    mpicc -c frequencyMPI.c -o frequencyMPI.o

clean:
    rm -f frequencyMPI.o program core *~

【问题讨论】:

  • 1. “成功编译的makefile”是什么意思?你不能编译 Makefiles...你是运行 make 还是 gmake,用 -f makefile.frequencyMPI 指定你的 Makefile? 2. 你有没有考虑过使用 CMake,让它为你生成 Makefile? Here 是关于如何做到这一点的解释。如果相关库不在包含路径中,它还会负责查找相关库。 3. 确定要运行 mpicc 包装器而不是直接编译吗?
  • 我编译成功的意思是当我输入make -f makefile.frequencyMPI时没有报错
  • 在包含示例时请使用块代码格式(例如,将所有行缩进 4+ 个空格)。如上所述,您不会“编译 makefile”;你运行make,它使用makefile中的指令来构建你的软件。上面的 makefile 构建了一个名为program 的程序。您是否尝试运行该程序?如果问题是它不起作用,那么我们需要知道,你输入了什么?你遇到了什么错误?
  • 使用make -f makefile.frequencyMPI 运行makefile 后,它会在目录中生成frequencyMPI.o。我尝试使用./frequencyMPI.o 运行它,它说权限被拒绝然后我尝试sudo ./frequencyMPI.o 然后它说找不到命令。通常,当我在终端上使用mpicc 编译时,我使用mpirun -np 3 ./frequencyMPI.o 运行,但是对于一个可执行文件,我不知道如何执行它以知道它是否正确。其次,我的程序不是命名为program,而是命名为frequencyMPI.c
  • 就术语而言,您的程序不是frequencyMPI.c。这就是您的程序的源代码。此外,frequencyMPI.o 也不是程序,也不能从命令行运行,它是一个 目标文件,代表源代码的编译版本。然后,您必须将该目标文件链接 到您在此处命名为program 的程序或可执行文件。然后就可以运行可执行文件了。

标签: c linux mpi makefile


【解决方案1】:

使用open MPI:mpicc编译,mpirun运行代码

所以你会这样做:

  • make,编译program
  • mpirun program,运行您的并行代码

【讨论】:

  • 这不能回答问题。问题出在mpirun 命令行,并在 cmets 部分进行了诊断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
相关资源
最近更新 更多