中国分布式计算论坛 » 分布式综合区 » 新手求助:简单并行化

2007-12-17 13:49 luomanking
新手求助:简单并行化

我们实验室有一个四个节点的集群。要求将一个串行程序通过某种方式在不同节点上并
行运行。实际上就是在不同节点上运行该程序,但分别处理不同的任务(输入文件)。
采用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个输入文件获得了预期的结果。但是,还是不放心,想请教各位高人,
这种方式效果好吗?有其他更好的方法吗?

谢谢!

2007-12-17 15:41 20080030成电
不了解集群和并行 等高手
不同机器上的进程ID有可能相同吗?


有的负载平衡是这样做的:用一个线程做任务管理 专门把不同的任务分配给不同的机器

2007-12-18 16:25 luomanking
正是利用了各个进程的ID不同来实现任务分配的!
在5个节点的集群上利用50个输入文件测试,能够获得想要的计算结果!

由于是新手,对相关的信息知之甚少,所以向各位高手请教一下!

页: [1]
查看完整版本: 新手求助:简单并行化


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.