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