|
我们实验室有一个四个节点的集群。要求将一个串行程序通过某种方式在不同节点上并
行运行。实际上就是在不同节点上运行该程序,但分别处理不同的任务(输入文件)。
采用OpenPBS提交作业,无法实现不同任务处理。因此,采用MPI函数调用原来的串行程
序,实现过程如下:
program mpi_e
include 'mpif.h'
integer rank,sizem,namelen,ierr
character (MPI_MAX_PROCESSOR_NAME) hostname
c--------------------------------------------------------------
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD,sizem,ierr)
call MPI_GET_PROCESSOR_NAME(hostname,namelen,ierr)
write(6,100) rank,sizem,hostname
100 format('Program on ',I1,' of ',I1,' on ', A30)
c-----------------------------------------------------------------
c Calculation
c-----------------------------------------------------------------
call exec(rank)
c-----------------------------------------------------------------
call MPI_FINALIZE(ierr)
stop
end
实际上是利用MPI提交的进程ID号,在计算程序(原串行程序)中分配输入文件。每个进
程读取相同的输入文件,由ID号来实现任务分配。
在测试时,利用5个输入文件获得了预期的结果。但是,还是不放心,想请教各位高人,
这种方式效果好吗?有其他更好的方法吗?
谢谢! |
|