文档详情

高级计算机体系结构第一次作.doc

发布:2020-02-03约2.19千字共3页下载文档
文本预览下载声明
计算机体系结构第一次作业 计算机学院 1.3 在PRAM模型上,假定算法A、B和C的执行时间分别为7n,nlogn/4和nloglogn,试问: 1)用大O 表示的时间复杂度是多少? 2) 三个算法,何者最快?何者最慢? 3)当n=1024时,三个算法何者最快?何者最慢? 4)如何解释上述1)和3)的不同结论? 答:(1)算法A、B和C的时间复杂度分别为O(n)、O(nlogn)和O(nloglogn)。 (2)算法A执行的最快,算法B执行的最慢。原因:当n的值足够大时,O(n)O(nloglogn)O(nlogn)。所以算法A执行的最快,算法B执行的最慢。 (3)当n=1024时,7nnloglognnlgon/4,所以,算法B最快,算法A最慢。 (4) 实际程序计算中,n的值一般都比较大(远大于1024=210),然而当n=1024时,logn可能仍然大于1,却小于10,所以loglogn的值小于1,从而n nlogn. 也就是说,时间复杂度是数量级的概念,忽略了常数系数,而3) 是计算出具体结果,因此会有差别。 所以结论不同。 1.8 给出如下串行程序代码段: for(i=0;iN;i++) A[i] = b[i]*b[i+1]; for(i=0;iN;i++) C[i] = A[i]+A[i+1]; 试用库例程方式,写出其等效的并行代码段; id=my_process_id(); p=number_of_processes(); for ( i= id; iN; i=i+p) A[i]=b[i]*b[i+1]; barrier(); for (i= id; iN; i=i+p) c[i]=A[i]+A[i+1]; 试用Fortram 90中的数组操作,写出其等效的并行代码段; my_process_id,number_of_processes(), and barrier() A(0:N-1)=b(0:N-1)*b(1:N) c=A(0:N-1)+A(1:N) 试用SGI PowerC Program, 写出其等效的并行代码段。 #pragma parallel #pragma shared(A,b,c) #pragma local(i) { # pragma pfor iterate(i=0;N;1) for (i=0;iN;i++) A[i]=b[i]*b[i+1]; # pragma synchronize # pragma pfor iterate (i=0; N; 1) for (i=0;iN;i++)c[i]=A[i]+A[i+1]; } 2.1 计算执行程序的有效CPI、MIPS速率及总的CPU执行时间。(图表省略) 答: CPI为执行每条指令所需要的平均的时钟周期数。所以,CPI为: CPI=(45000*1+32000*2+15000*2+8000*2)/(45000+32000+15000+8000) =1.55 MIPS=In/(Te*10^6)=Rc/(CPI*10^6) =25.8 Tcpu=In*CPI*Tc=(45000*1+32000*2+15000*2+8000*2)/(40*10^6) =3.785ms 2.2 计算 答: (1)在单处理机上执行该程序的平均CPI值为: 1*60%+2*18%+4*12%+8*10%=2.24 (2)计算相应的MIPS速率 MIPS=Rc/(CPI*10^6)=40*10^6/(2.24*10^6)=17.86 2.3 如题,计算: 1)渐近带宽r∞=? 2)半峰值信息长度 = ? [提示:to=46μs] 答:(1)渐近带宽r∞=1 / 0.035=28.6MB/S (2)半峰值消息长度m1/2=to* r∞=46us*28.6MB/S=1315.6B 2.9假设N=500,P=6,比照表2.12,试列出采用不同调度算法的结果 调度算法 任务分配粒度随时间的变化 静态调度 84 84 84 84 84 84 84 84 84 84 84 84 SS 1 1 1 1 1 1 1 1 1 1 1 1 BSS(k=20) 20 20 20 20 20 20 20 20 20 20 20 20 GSS 83 69 56 47 39
显示全部
相似文档