第2章并行编程基础(免费阅读).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分布与并行计算 Distributed and Parallel?Computing 主讲 庄毅 zhuangyi@263.net 第2章 并行编程基础 2.1 并行编程综述 2.2 进程、任务和线程 2.3 并行性问题 2.4 交互/通信问题 2.5 并行程序中的语义问题 并行编程基础 并行编程综述 并行编程缘何艰难 1、并行软件一直落后的主要原因是并行编程比起顺序编程来是一个更复杂的智力活动。它包含了顺序编程中的所有问题,还要加上在智力上更具挑战性的许多其他问题。 2、顺序编程只有一个基本模型(冯诺依曼模型),而并行编程中却有许多不同的模型。 3、开发顺序程序的软件环境工具,如编译器、调试程序、以及特征分析器,要比并行程序的先进得多。 4、比起并行编程来,有更多的人一直在从事顺序编程而且已有长得多的时间。对顺序编程由于已积累了大量知识,包括过去所发现的错误以及所得到的教训,因此更为成熟。 2.1 并行编程综述 并行编程进展 面向超级计算机的编程模型正集中趋向于两种模型: 1)适用于PVP、SMP、DSM的单地址空间的共享变量模型; 2)适用于MPP和机群的多地址空间的消息传递模型。 SIMD模型原已从主流超级计算机中淡出,但对于如同语言、图象和多媒体处理的专用嵌入式那些应用仍非常有用。 ----尤其是多核芯片的问世,以SIMD模型为基础,未来的通用计算机编程将带来很大的改进。 并行编程综述 并行编程进展 高层并行编程模型正集中趋向于4种标准模型: 1)数据并行(如HPF) 2)消息传递(如PVM和MPI) 3)共享变量(如ANSI X3H5) 4)蕴式并行模型,用户只需编写顺序程序,其中的蕴式并行性由并行化编译器(如Kap)进行析取。 图1 吞吐率处理   ◆ 减少单个并行应用的响应时间 ◆ 增加多个独立顺序作业的系统吞吐率 并行编程基础 并行编程环境 并行处理系统的组成部分 图2 并行编程环境工具: 作业管理工具 调试工具 性能工具 并行编程基础 并行编程方法 目前在实际的并行计算中广泛使用的并行编程模型有4种: 蕴式并行模型、数据并行、 消息传递、共享变量 这些并行编程模型均已在实际的并行编程系统中得到实现,绝大部分为扩展的Fortran或扩展C。 对于顺序编程有三种扩展并行性的方法: 库子程序、新语言构造、编译器命令。 并行编程基础 三种并行化方式举例: for(i=0;iN;i++) A[i] = b[i]*b[i+1]; for(i=0;iN;i++) c[i] = A[i]+A[i+1]; (a) 串行代码段 并行编程基础 所有3个程序均执行相同的如图a所示的串行C代码的计算。 (1)图b说明了库方法 其中两个循环被分配到P个过程并行执行。由两个库函数:my_process_id() 和number_of_processes()开发并行性。 路障barrier()函数保证在第1个循环后,所有进程同步,这样第2个循环将使用在第一个循环中已更新的数组A的正确值。 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]; (b) 使用库例程的等效并行代码 并行编程基础 (2)若使用新的语言构造 使用新的语言构造,上述的这些并行操作就可变得相当简单,如图c所示。 Fortran 90的数组赋值构造A(0:N-1) = b(0:N-1)*b(1:N)可在1条数组赋值语句中完成N个元素乘法和赋值。在两个数组赋值之间,不需要显式同步,因为Fortran 90语句是松散同步:在下一语句开始执行前

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档