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