c - PBS 集群 Hello World 上的 MPI

标签 c parallel-processing mpi pbs

我正在使用 mpiexec 运行几个 hello world 可执行文件。它们各自运行,但进程数始终为 1,看起来应该有 4 个进程。有人明白为什么吗?另外我不确定为什么 stty 给我一个无效的论点。谢谢!

这是输出:

   /bin/stty: standard input: invalid argument
   Hello world from process 0 of 1
   Hello world from process 0 of 1
   Hello world from process 0 of 1
   Hello world from process 0 of 1

这是c文件:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char *argv[])
{
  int rank, size;
  MPI_Init (&argc, &argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Comm_size(MPI_COMM_WORLD, &size);
  printf("Hello world from process %d of %d\n", rank, size);
  fflush(stdout);
  MPI_Finalize();
  return 0;
}

这是提交脚本:

#!/bin/bash

#PBS -N helloWorld
#PBS -l select=4:ncpus=2
#PBS -j oe
#PBS -o output
#PBS -l walltime=3:00
cd $PBS_O_WORKDIR


mpiexec ./helloWorld

最佳答案

史蒂文:

以上应该有效;看起来有些东西(PBS <-> MPI 库 <-> mpiexec)配置错误。

第一个也是最明显的猜测——mpiexec 是否与您编译时使用的库对应的同一个 mpi 启动程序?如果您在脚本中执行 which mpiexec,编译程序时是否会得到与 which mpicc 对应的内容?在编译之前,您是否必须执行诸如“模块加载 [mpi 包]”之类的操作?

同样,您的 mpiexec PBS 感知吗?如果没有,您可能必须以某种方式指定主机文件 (${PBS_NODEFILE}) 和处理器数量。

您使用的是什么 mpi,您在什么系统上运行 - 它是一个公开可用的系统,我们可以查看其文档吗?

关于c - PBS 集群 Hello World 上的 MPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3899152/

相关文章:

c - 这个数据报套接字有什么问题?

makefile - 使用 make 时我应该开始多少个工作?

c - MPI 集体操作和进程生命周期 (C/C++)

python - 比可悲的可用处理器更多的并行进程

multithreading - Erlang中Actor的基本解释

c++ - 在 C++ 中使用 MPI_Gatherv() 和 MPI_Datatype 到 'gather' 动态分配的二维数组

c++ - 没有 Boost.Serialization 的序列化

c - 错误 : expected ')' before numeric constant

c - 如何在 win 32 中使用线程概念实现进度条(显示进度)?

c - 指针/函数参数问题?