作业答案-华东理工大学计算机科学与工程系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业(1)
习题2.6 (P75)
根据2.3.1节有关SP2介绍,试回答:
①SP设计者为了赶上市场作了什么决策?
②SP设计者为了达到系统通用采用了什么相应技术?
③SP系统是如何支持4种SSI:单一进入点、单一文件层次、单一控制点和单一作业
管理系统?
④SP设计者为了增加带宽,在通信子系统中主要使用了什么技术?
答案:IBM Sp2系统主要包含一下一些特性:
①为了赶上市场,遵循Moore定律,采用灵活机群结构;
②为了达到系统通用采用了标准系统环境和标准编程模式;
③采用部分单一系统映象支持4种SSI。
④为了增加带宽,在通信子系统主要实现了同时连接以太网和高性能开关网。
习题3.4 (P99)
综合比较等效率、等速度和平均延迟可扩放性度量标准之间异同性。
答案:三种度量可扩放性标准是相互等效。三种度量方法基本出发点都是抓住了影响算法可扩放性基本参数T o,只是等效率标准采用解析计算方法得到T o;等速度标准
将T o隐含在所测量执行时间中;而平均延迟标准则是保持效率为恒值时,通过
调节W与p来测量并行与串行执行时间,最终通过平均延迟反映出T o,所以等
速度与平均延迟标准都是辅之以测试手段而得到有关性能参数来评判可扩放性;
而等效率标准则是通过解析计算开销参数T o来评判可扩放性。
习题3.6 (P99)
使用40MHZ主频标量处理器执行一个典型测试程序,其所执行指令数及所需周期数如表所示。试计算执行该程序有效CPI、MIPS。
答案:机器时钟周期为τ,程序中指令总条数为I C,执行每条指令所需平均时钟周期
数为CPI,则一个程序在CPU上运行时间T为:
T =I C×CPI×τ= C×τ
CPI = C/I C
C= (45 000+32 000*2+15 000*2+8 000*2) = 155 000
CPI =1.55
MIPS( Million Instructions Per Second)
MIPS = Ic / (T×106)= f / (CPI×106 )
= (40×106 )/(1.55×106)
≈25.8
作业(2)
习题5.3 P136页
给定序列(33,21,13,54,82,33,40,72)和8个处理器,试按照下述算法构造一个在PRAM-CRCW模型上执行快排序所用二叉树。(包括root值,Lc和Rc值,最后用处理器号表示树)
输入:A[1..n]和n个处理器,并且A[i]保存在PiLM中
输出:二叉排序树root, Lc[1..n], Rc[1..n]在SM中
Begin
(1)for each Pi par-do
(1.1) root=i
(1.2) fi=root
(1.3) Lc i=Rc i=n+1
end for
(2)repeat for each P i, i<>root par-do
if (A i< A fi) or (A i= A fi and i (2.1)Lc fi=i (2.2)if i=Lc fi then exit else fi= Lc fi end if else (2.3)Rc fi=i (2.4)if i=Rc fi then exit else fi= Rc fi end if end if end repeat End 答案:以下给出一种正确答案: 排序过程数据分布如下 root = 6 所构造出用处理器号表示二叉树如图所示: [6]{33}以上只是给出了一种情况,如果数据改变了,也要会做。 习题6.3 P158页 PRAM 上对数划分算法描述如6.3所示。 ① 试分析上述算法时间复杂度。 答案:常数级,O(1) 习题6.6 P158页 ①试分析算法6.9总运算量()?=n W ②假定序列为(1,2,3,4,5,6,7,8),试用算法6.9求其前缀和。 算法6.9 前缀和: n 个元素{x1,x2,…,xn},前缀和是n 个部分和,这里S i =x 1+x 2…+x i , 1≤i ≤n 求解前缀和算法: 输入:n=2k 数组A,k 为非负整数 输出:数组C ,其中C(0,j)是第j 和前缀和(1≤j≤n ) begin (1)for j=1 to n par-do //初始化 B[0,j]=A[j] end if (2)for h=1 to log n do //正向遍历 for j=1 to n/2h par-do B[h,j]=B[h-1,2j-1]*B[h-1,2j] end for end for (3)for h=logn to 0 do //反向遍历 for j=1 to n/2h par-do (i) if j=even then //该结点为其父结点右儿子 C[h,j]=C[h+1,j/2] end if (ii) if j=1 then //该结点为最左结点 C[h,1]=B[h,1] end if (iii) if j=odd>1 then //该结点为其父结点左儿子 C[h,j]=C[h+1,(j-1)/2]*B[h,j] end if end for end for end 答案:①()n n W 3= ②初始化将A[j]值赋给相应B[0,j]; 正向遍历过程如下: B[0,1]=1 B[0,2]=2B[0,3]=3 B[0,5]=5 B[0,6]=6B[0,7]=7 B[0,8]=8 反向遍历过程如下: