【发布时间】:2012-03-19 04:26:22
【问题描述】:
您好:我只是为我设置了一个 OpenMPI 环境,其中我设置了三个使用无密码身份验证的虚拟机等。我成功编译/链接了一个简单的“Hello World”风格的程序:
#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[]) {
int numprocs, rank, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Get_processor_name(processor_name, &namelen);
printf("Process %d on %s out of %d\n", rank, processor_name, numprocs);
MPI_Finalize();
}
我观察到当我在“机器文件”中有三个不同节点的主机名时,作业挂起。每个单独的节点都运行良好 - 我也尝试了两个节点的组合(即三个节点中的任何两个),它工作正常。所以,我可以排除任何节点不工作的可能性。
我怎样才能对此进行更多调查?谢谢!
【问题讨论】:
-
编写死锁的并行程序非常容易。在您发布一些代码或其他证据之前,我相信这就是您所做的。尤其是当您编写“倾向于挂起”时,这会增加有时它不会挂起的可能性——程序的经典行为不是无死锁。
-
谢谢,我已经添加了代码。我已经删除了“倾向于”。它总是挂起。
-
如果您删除
printf命令并写入例如一个文件,而不是? (文件应特定于每个进程)
标签: c parallel-processing openmpi