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

最佳答案

史提芬:
上面的方法应该可以工作;它看起来像是线路上的一些东西(PBSMPI librarympiexec)配置错误。
第一个,最明显的猜测是,mpiexec是否是与您编译的库对应的mpi启动程序?如果在脚本中执行which mpiexec操作,在编译程序时是否得到与which mpicc相对应的内容?在编译之前,您需要执行类似“module load[mpi package]”的操作吗?
同样,您的mpiexec PBS是否知道?否则,您可能需要以某种方式指定主机文件(${PBS_NODEFILE}),以及处理器的数量。
您使用的是什么mpi,运行的是什么系统——它是一个公共可用的系统,有我们可以查看的文档吗?

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

10-09 03:45