1

我正在使用 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
4

1 回答 1

4

史蒂文:

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

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

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

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

于 2010-10-10T16:44:55.083 回答