PBS集群Hello World上的MPI

时间:2010-10-10 05:35:35

标签: 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

1 个答案:

答案 0 :(得分:3)

史蒂芬:

以上应该有效;它看起来像沿线(PBS&lt; - &gt; MPI库&lt; - &gt; mpiexec)的配置错误。

第一个也是最明显的猜测 - mpiexec是否与您编译的库对应的mpi启动程序相同?如果你在脚本中执行了which mpiexec,那么编译程序时是否会获得与which mpicc对应的内容?在编译之前,你是否必须做“模块加载[mpi包]”之类的事情?

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

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