找回密码
 新注册用户
搜索
查看: 4445|回复: 2

新手求助:简单并行化

[复制链接]
发表于 2007-12-17 13:49:04 | 显示全部楼层 |阅读模式
我们实验室有一个四个节点的集群。要求将一个串行程序通过某种方式在不同节点上并
行运行。实际上就是在不同节点上运行该程序,但分别处理不同的任务(输入文件)。
采用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:34 | 显示全部楼层
不了解集群和并行 等高手
不同机器上的进程ID有可能相同吗?


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

使用道具 举报

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~
欢迎大家多多支持基金会~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2024-4-30 01:03

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表