大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  Pascal语言>>Pascal练习>>高性能计算机         本站全文搜索: 友情提示:

高性能计算机
http://www.mydrs.org  8/6/2001  大榕树


【问题描述】

  现在有一项时间紧迫的工程计算任务要交给你--国家高性能并行计算机的主管工程师--来完成。为了尽可能充分发挥并行计算机的优势,我们的计算任务应当划分成若干个小的子任务。
这项大型计算任务包括A和B两个互不相关的较小的计算任务。为了充分发挥并行计算机的运算能力,这些任务需要进行分解。研究发现,A和B都可以各自划分成很多较小的子任务,所有的A类子任务的工作量都是一样的,所有的B类子任务也是如此(A和B类的子任务的工作量不一定相同)。A和B两个计算任务之间,以及各子任务之间都没有执行顺序上的要求。

  这台超级计算机拥有p个计算节点,每个节点都包括一个串行处理器、本地主存和高速cache。然而由于常年使用和不连贯的升级,各个计算节点的计算能力并不对称。一个节点的计算能力包括如下几个方面:

  1. 就本任务来说,每个节点都有三种工作状态:待机、A类和B类。其中,A类状态下执行A类任务;B类状态下执行B类任务;待机状态下不执行计算。所有的处理器在开始工作之前都处于待机状态,而从其它的状态转入A或B的工作状态(包括A和B之间相互转换),都要花费一定的启动时间。对于不同的处理节点,这个时间不一定相同。用两个正整数分别表示节点i转入工作状态A和工作状态B的启动时间(单位:ns)。

  2. 一个节点在连续处理同一类任务的时候,执行时间--不含状态转换的时间--随任务量(这一类子任务的数目)的平方增长,即:
  若节点i连续处理x个A类子任务,则对应的执行时间为:
  类似的,若节点i连续处理x个B类子任务,对应的执行时间为:
  其中, 是系数,单位是ns。

  任务分配必须在所有计算开始之前完成,所谓任务分配,即给每个计算节点设置一个任务队列,队列由一串A类和B类子任务组成。两类子任务可以交错排列。

  计算开始后,各计算节点分别从各自的子任务队列中顺序读取计算任务并执行,队列中连续的同类子任务将由该计算节点一次性读出,队列中一串连续的同类子任务不能被分成两部分执行。
【编程任务】

  现在需要你编写程序,给这p个节点安排计算任务,使得这个工程计算任务能够尽早完成。假定任务安排好后不再变动,而且所有的节点都同时开始运行,任务安排的目标是使最后结束计算的节点的完成时间尽可能早。
【输入输出】

  输入文件名是hpc.in。
  文件的第一行是对计算任务的描述,包括两个正整数 ,分别是A类和B类子任务的数目,两个整数之间由一个空格隔开。
  文件的后面部分是对此计算机的描述:
  文件第二行是一个整数p,即计算节点的数目。
  随后连续的p行按顺序分别描述各个节点的信息,第i个节点由第i+2行描述,该行包括下述四个正整数(相邻两个整数之间有一个空格):
  输出文件名是hpc.out。其中只有一行,包含有一个正整数,即从各节点开始计算到任务完成所用的时间。


【样例】
设输入文件hpc.in为
 
对应的输出文件hpc.out为
93
【数据说明】
 

作 者:国家集训队
来 源:冬令营试题
共有5174位读者阅读过此文

  • 上篇文章摄影师的烦恼
  • 下篇文章动态规划的状态表示(一)

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8307]
    2. 七类高中生具有保送资格 [5911]
    3. NOI2006获奖选手名单 [4956]
    4. 关于举办NOIP2006模拟赛的通告 [4107]
    5. Turbo Pascal各语句运行速... [3595]
    6. Turbo王者归来新Delphi免费... [3182]
    7. IOI2006我国4名选手全部获得金... [2946]
    8. 关于APIO2007与IOI2007... [2764]
    9. noip倒计时 by 枯叶蝴蝶 [2684]
    10. 朱泽园:思想上的金牌更重要 [2169]
    高性能计算机
    摄影师的烦恼
    猜单词游戏
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号