收藏 分享(赏)

并行处理课件.doc

上传人:pw17869 文档编号:6282799 上传时间:2019-04-04 格式:DOC 页数:7 大小:52.50KB
下载 相关 举报
并行处理课件.doc_第1页
第1页 / 共7页
并行处理课件.doc_第2页
第2页 / 共7页
并行处理课件.doc_第3页
第3页 / 共7页
并行处理课件.doc_第4页
第4页 / 共7页
并行处理课件.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、2.14 点对点通信本节借助图形/图象变换中的实例程序,引入点对点通信机制实现并行。例 2.14.1在分辨率为 SIZE*SIZE(SIZE 为 2 的幂)的黑白带灰度的显示屏幕上:左上角为坐标原点,轴向下,轴向右;为白,为黑。用 NUMNODES(亦为 2 的幂,且标记的象素点,连带计算出的新图像值 newvalue,向主进程 Pmaster 报告。通过双重循环语句:for (oldrow=row;oldrow,无论其原来的图像值如何,都向它所在的小正方形左上角看齐,即以左上角原来的图像值mapoldrow16*16oldcol16*16作为它的新值 newvalue。此即所谓的“马赛克”效

2、应。程序中的临时存储 temp_map,用来逐点收集新的图像值;待全屏新值到齐,集中地向显示缓冲区转移,以免变换过程的“不堪入目”。 设 map 的初值:mapij=(i+j)/(2*(SIZE-1); 0i,j。主进程:for (I=0;I moves to new one */if !(newrow=SIZE).OR. (newcol=SIZE)temp_mapnewrownewcol=mapoldrowoldcol;for (I=0;I计算出它的新位置后,立即借助发送语句:send (oldrow,oldcol,newrow,newcol,Pmaster);向主进程汇报,而主进程则借助接

3、收语句:recv(oldrow,oldcol,newrow,newcol,Pany);登记计算结果。由于本例的图形/图像变换是位移,产生出界问题。仅在新位置不出界,即:(newrow=SIZE).OR.(newcol=SIZE)为“假”的条件下,才会真正登记进“草稿纸”:temp_mapnewrownewcol=mapoldrowoldcol;跟前例一样,计算全部完成后从“草稿纸”集中写入显示缓存;跟前例又不一样,本例的“草稿纸”即 temp_map,不仅避免画面杂乱无章,而且保护原始数据:一个点未被移走之前,不让别的点移入,以免该点的原信息丢失。因此,它对前例是可省的,对本例却是不可或缺的。

4、2.15 并行程序设计从 1945 年起,当各类串行计算机和各种串行程序设计语言涌现在人们面前时,人们面临过串行程序设计的挑战。串行程序设计的困难携手应用领域的膨胀,导致软件危机如火山般喷发,逼迫人们耗费大量人力物力去探索程序设计的自动化。对此,人们记忆犹新。 “前车之鉴,乃后车之师。 ”如今,当各类并行计算机和各种并行程序设计语言涌现在我们面前时,我们该如何去走跟串行相应的旅程呢?为了避免并行时代的软件危机,让我们借助对比法揭示并行与串行的实质差异。如图 2.17 所示,假定我们在用也许淡忘了的框图法编写串行的1280 项 A(1:1280)求和程序。例 2.15.1 A(1:1280)串行

5、求和和数 S 清零否 还有未加项吗? 出口 S=A(i)是取下一项加进 S 里 图 2.17 串行求和框图其中最上面的那一框,实现为赋值语句:S = 0其余各框实现为循环语句:DO I = 1 , 1280S = S + A(I)ENDDO 不难想象,上述步骤本质上是翻译:从汉语翻译成 FORTRAN 语言。跟英语专家把莎士芘亚全集译成中文,或者汉语专家把中国四大名著译成英文雋然而异,此翻译过程基本不含创造性,分工为程序员的“简单”劳动。下面,让我们把它并行化。例 2.15.2 A(1:1280) 在“银河-1 ”上并行求和S = 0DO I = 1 , 1280S = S + A(I) /*

6、 忽略循环开关门的开销,共 1+1280 次运算 */ENDDO依据加法的结合律:( a + b ) + c = a + ( b + c )硬件的向量长度,乃系统一次运算的最大并行度。我们可以按照“银河-1” 硬件的向量长度 128,把这 1280 个加法运算切成 10 等份:先加 A(1+128*0:128+128*0) 共 128 个再加 A(1+128*1:128+128*1) 共 128 个.再加 A(1+128*8:128+128*8) 共 128 个再加 A(1+128*9:128+128*9) 共 128 个 10 排,每排 128 个,从而转换为二重循环:S = 0DO I =

7、 0 , 9DO J = 1 , 128S = S + A(128*I+J) /* 仍然 1+128*10 次 */ENDDOENDDO再依据加法的交换律:( a + b ) + c = ( a + c ) + b颠倒循环次序:S = 0DO J = 1 , 128DO I = 0, 9S = S + A(128*I+J) /* 先竖加,后横加,次数未变 */ENDDOENDDO外层循环能够改造成向量并行形式:S = 0B(1:128) = 0DO I = 0, 9B(1:128) = B(1:128) + A(1+128*I:128+128*I)ENDDODO J = 1 , 128S =

8、S + B(J) /* 12+128 = 140 次 */ENDDO在向量长度 128 的“银河-1”上,速度提高 9 倍多。 为了展示并行中的智力,我们尚可深入地挖掘其并行的潜力。例 2.15.3 A(1:1280)求和的并行效益最大化。以上我们取机器向量寄存器的长度 128 分排,由向量长度的最大化推测并行效益也会最大化。其实不然:由于最后的那个串行次数会随并行长度同时达到极值,一涨一消,效益有某种程度的相抵。于是,效益或许还有提高的空间:在缩小最后的那个串行次数,因而同时又减小了并行长度的情况下,程序的表现如何呢?记最后的那个串行次数亦即向量运算的长度为 x , 1 x 128。于是,等

9、分排数等于:y = (1280/x)“”为“向上取整”函数。程序变成:S = 0B(1:x) = 0DO I = 0, y-1B(1:x) = B(1:x) + A(1+x*I:x+x*I)ENDDODO J = 1 , xS = S + B(J)ENDDO 忽略循环开关门的开销,总的运算次数 n 等于:2+y+x = 2+x+(1280/x)不是一个解析函数,微积分的极值学说对它无用武之地。让我们回避非整除的诸多麻烦(比如扩张 A、难求极值) ,令 x 递减地取 2 的幂:x = 128, n = 140x = 64, n = 86x = 32, n = 74x = 16, n = 98.推

10、得 A(1:1280)在分段无零头的限制下,在“银河-1” (对于硬件向量长度不小于 32 的机器,尽然)上最优的并行求和程序:S = 0B(1:32) = 0DO I = 0, 39B(1:32) = B(1:32) + A(1+32*I:32+32*I)ENDDODO J = 1 , 32S = S + B(J) ENDDO 较之串行,加快 17 倍多。 人是宇宙中最复杂的并行体(之一?):当我们上班从事各行各业的活动时,我们的呼吸系统、消化系统、血液循环系统、排泄系统、,都在并行不悖地工作着。人体生理学家揭示:人体的这些并行活动,都是在下意识的层面上进行的;而在有意识即思维的层面上,一个时刻人脑只能“想”一件事,成语“一心不可二用”正是此意。“一心不可二用” ,亦即“一心只可一用” ,所以,人的思维机制是串行的。把例 2.15.1 跟例 2.15.2 与例 2.15.3 对比,前者用串行语言描述串行思维, (相对而言)轻而易举;后二者用并行语言描述串行思维,又要确保其正确无误(迄今为止,高性能计算处理的皆为关系国计民生的重大课题!) ,须费九牛二虎之力,也就可想而知了。数据相关性理论应运而生,将为我们提供发掘细粒度并行潜力的强大工具。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报