并行面向对象语技术进展.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
并行面向对象语技术进展

并行面向对象语言技术进展 于勐 2001年3月26日 (一教讨论班) 需求背景 并行计算的软件进展落后于并行计算机的硬件进展约一代(K. Hwang Z. Xu) HPF,并行编译器的成功应用 面向对象技术所获得的成功(Java, CORBA, DCOM, OOA, OOP) 高性能和易于使用的发展趋势 并行的面向对象语言? 并行面向对象语言 Mentat --- University of Virginia pC++ --- portable paralle C++ Indiana CC++ --- Concurrent C++ ISI of USC HPC++ --- High Performance C++ Consortium at Indiana University Concert (ICC++) --- Illinois Javar --- Indiana University 并行模型 图模型 Macro Data flow Graph of Mentat Multiple Objects Multiple Data flow 线程模型 pC++ SPMD HPC++ 异构计算节点,多上下文,多级并行性 对象交互规范JAVA RMI, Nexus RMI, CORBA, DCOM和OLE等 并行面向对象语言的并行设施 并行程序块 Mentat对象 处理器对象和全局对象指针 对象聚集 对象分布 并行面向对象语言的并行设施 同步和互斥 隐式粒度控制 函数调用 全局名字空间 并行程序块 CC++中的并行程序块用par {statementsopt}表示。 CC++中用parfor (for-init-statement expressionopt;expressionopt) statement标识一个并行循环。 ICC++用conc关键字来标识并行程序块和并行循环。与CC++不同,ICC++中的并行块和并行循环中的迭代由编译器检查并保证语句间的依赖关系。 并行程序块 HPC++采用和Javar相同的方式对循环进行并行化。程序员为需要并行化的循环标明#pragma HPC_INDEPENDENT,由编译器为该循环生成多个并行执行的线程副本,每个线程完成部分循环计算。在循环中,程序员还可以用#pragma HPC_REDUCE指出归约变量,用#pragma HPC_INDEPENDENT,PRIVATE指出可私有化的变量。 Mentat对象 mentat关键字定义的Mentat对象占据独立的,互不相交的存储空间。其成员函数调用都是传值调用,函数返回结果也是传值的。 persistent mentat对象会保持对象调用间的状态,regular mentat对象则不保持对象调用间的状态,其成员函数更像一个纯函数。 对象在使用时实例化。 处理器对象和全局对象指针 CC++在类说明中用global来说明一个处理器对象(Processor Object)类。处理器对象的公共成员函数和成员数据的作用域为对象所在的处理器。 pC++中的处理器对象的概念与上述不同,而与HPF中的处理器模板相似。pC++中用类似Processor P(m,n)的语法说明处理器结构,实际上对应于目标SPMD程序的线程结构。 对象聚集 对象聚集(aggregate)指的是需要并行执行相同操作的一组对象。我们认为对象聚集是用于高性能计算的并行面向对象语言的一个必备的语言设施。 pC++用Collection关键字采用和类相同的语法定义对象聚集。 对象聚集 Collection被编译器自动处理为模板(Template)。程序员还可以用定义Template TEClass的方法定义Collection,并可以用下面引用子向量的形式使用Collection。 p[i:j:k].f(); 表示对Collection p中标识从i到j,步长k的所有元素调用函数f()。 对象分布 同步和互斥 单赋值同步变量。 计数信号量。 协同操作和通信。 对象级同步。 函数级同步。 语句块的同步。 隐式粒度控制 ICC++中的粒度是由编译器来动态分析控制的。ICC++编译器在编译时刻生成多个可执行的并行线程版本,由于线程的开销也不相同(在ICC++中堆线程有1种,栈线程有3种),编译器生成的目标代码在运行时刻根据当时的动态绑定,对象分布情况选择具有最小执行开销的线程版本运行。 函数调用 Mentat中对函数返回值采用了return-to-future机制,其函数名为rtf()。 .它可以返回另外的刚刚启动或正在运行的Mentat对象的函数值。 .rtf()不表明函数运行结束,只表示结果已经可用。函数可以继续进行其它处理,例如保存计算状态,和其它对象通信等。 依据编译器发现的

文档评论(0)

ldj215322 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档