标题: 新手求助:简单并行化
luomanking
新手上路
Rank: 1



UID 15768
精华 0
积分 3
帖子 3
阅读权限 10
注册 2007-12-6
发表于 2007-12-17 13:49  资料  短消息  加为好友 
新手求助:简单并行化

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

谢谢!

顶部
[广告] SETI@home 优化程序,推荐使用!
20080030成电
论坛担当
Rank: 4



UID 9470
精华 0
积分 746
帖子 525
阅读权限 10
注册 2005-12-16
来自 海南临高
发表于 2007-12-17 15:41  资料  短消息  加为好友 
不了解集群和并行 等高手
不同机器上的进程ID有可能相同吗?


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

顶部
luomanking
新手上路
Rank: 1



UID 15768
精华 0
积分 3
帖子 3
阅读权限 10
注册 2007-12-6
发表于 2007-12-18 16:25  资料  短消息  加为好友 
正是利用了各个进程的ID不同来实现任务分配的!
在5个节点的集群上利用50个输入文件测试,能够获得想要的计算结果!

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

顶部
 



当前时区 GMT+8, 现在时间是 2008-7-24 05:14
沪ICP备05042587号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 中国分布式计算总站 - Archiver - WAP