当前位置: 首页 > 专利查询>微软公司专利>正文

用于数据并行编程模型的编译器生成的调用存根制造技术

技术编号:7052600 阅读:260 留言:0更新日期:2012-04-11 18:40
在此描述的是用于生成用于数据并行编程模型的调用存根以使得用静态编译的高级编程语言编写的数据并行程序可以比传统方法更加声明性、可重用和可移植的技术。借助于所描述的技术中的某一些,由编译器(116)生成调用存根(118),且那些存根将数据并行计算的逻辑排列桥接到用于数据并行计算的目标数据并行硬件的实际物理排列。

【技术实现步骤摘要】

本专利技术一般涉及数据并行编程,尤其涉及用于数据并行编程模型的编译器生成的调用存根
技术介绍
在数据并行计算中,并行性起源于跨多个同时分离并行计算操作器或节点而分布大的数据集。作为对比,任务并行计算涉及跨多个同时分离并行计算操作器或节点而分布多个线程的执行。通常,硬件被具体地设计为执行数据并行操作。因此,数据并行程序是为数据并行硬件专门编写的程序。传统上,数据并行编程要求理解数据并行概念的非直观本质并密切熟悉所编程的具体数据并行硬件的高度熟练的程序员。在超级计算的领域之外,数据并行编程的常见用途是图形处理,这是因为这样的处理是规则的、数据密集的,且可以获得专用的图形硬件。尤其,图形处理单元(GPU)是被设计为从计算机的主中央处理单元(CPU)分担复杂的图形渲染的专用多核处理器。多核处理器是其中核的数量足够大以致传统的多处理器技术不再有效的处理器——此阀值在几十个核的范围内的某处。尽管多核硬件并不必定与数据并行硬件相同,但数据并行硬件可以通常被认为是多核硬件。其他现有的数据并行硬件包括可从现代主要处理器生产商获得的x86/x64处理器中的单指令多数据(SIMD)、流化SIMD扩展(SSE)单元。典型的计算机历史上是基于不是专门设计或能够承担数据并行性的传统单核通用CPU。因此,用于传统CPU的传统的软件和应用程序并不使用数据并行编程技术。然而, 传统的单核通用CPU正被多核通用CPU代替。尽管多核CPU能够承担数据并行功能,但很少利用这样的功能。由于传统的单核 CPU不能够承担数据并行,大多数程序员不熟悉数据并行技术。即使程序员感兴趣,仍然存在程序员完全地理解数据并行概念和学习足够多以便充分熟悉多核硬件以实现那些概念的大的障碍的需要。如果程序员清除了那些障碍,他们必须为他们希望他们的程序在其中运行的每一特定的多核硬件配置重新创建这样的编程。也就是说,因为常规的数据并行编程是硬件专用的,对一个数据并行硬件有效的特定解决方案将并不必定对另一数据并行硬件有效。由于程序员为具体的硬件编程他们的数据并行解决方案,程序员面临不同的硬件引起的兼容性问题。目前,不存在允许普通程序员执行数据并行编程的被广泛地采纳的、有效的和通用的解决方案。普通程序员是不完全理解数据并行概念且不密切熟悉每一不兼容的数据并行硬件场景的程序员。此外,不存在允许程序员(普通的或不不普通的)可以聚焦于正被编程的应用程序的高级逻辑而非聚焦于目标硬件级的具体实现细节的现有解决方案
技术实现思路
在此描述的是用于生成用于数据并行编程模型的调用存根以使得以静态编译的高级编程语言编写的数据并行程序可以比传统方法更加声明性、可重用和可移植的技术。 借助于所描述的技术中的某一些,由编译器生成调用存根,且那些存根将数据并行计算的逻辑排列桥接到用于该数据并行计算的目标数据并行硬件的实际物理排列。在所描述的一些其他技术中,编译器映射由数据并行函数的单元数据并行计算 (即,“内核”)期望的给定输入数据。提供本
技术实现思路
以便以简化形式介绍下面在具体实施方式中进一步描述的一些概念。本
技术实现思路
不旨在标识所要求保护的本主题的关键特征或必要特征。例如,术语“工具”可以指上述上下文和通篇文档所准许的设备、系统、方法、和/或计算机可读介质。附图说明参考附图描述具体实施方式。附图中,附图标记最左边的数位标识该附图标记首次出现的图。在各附图中,使用相同的附图标记来指示相同的特征和组件。图1示出可用于实现在此描述的用于数据并行编程模型的技术的示例计算环境。图2和图3是一个或多个示例过程的流程图,每一流程图实现在此描述的技术中的某一些,尤其是涉及数据并行编程模型的那些技术。图4和图5是一个或多个示例过程的流程图,每一流程图实现在此描述的技术,包括涉及用于数据并行编程模型的编译器生成的调用存根的那些技术。具体实施例方式在此描述的是用来生成用于数据并行编程模型的调用存根以使得用静态编译的高级编程语言编写的数据并行程序可以比传统的方法更加声明性、可重用和可移植的技术。借助于所描述的技术中的某一些,编译器生成调用存根,且那些存根将数据并行计算的逻辑排列桥接到用于该数据并行计算的目标数据并行硬件的实际物理排列。换言之,调用存根桥接将通用化和逻辑数据并行实现(例如,数据并行程序)之间的间隙桥接到具体的和物理的数据并行实现(例如,在数据并行硬件中)。在一些所描述的技术中,编译器生成将给定的输入数据映射到数据并行函数的单元数据并行计算(即,“内核”)所期望的那些数据的代码。为达到一定程度的硬件无关性,各实现被描述为可以扩展为支持数据并行编程的通用编程语言的一部分。C++编程语言是在此描述的此类语言的主要示例。C++是静态类型的、自由形式的、多风格的编译性通用编程语言。C++可以也被描述为命令式的、过程式、 面向对象的和泛型的。C++语言被认为是中级编程语言,这是因为它包括高级和低级语言特征两者的组合。本专利技术的概念不限于以C++编程语言的表达式。相反,C++语言可用于描述本专利技术的概念。可以使用的一些替换编程语言的示例包括JaVaTM、C、PHP、ViSUal Basic, Per1,Python ,C#,Ruby,DeIphi,Fortran,VB,F#,OCaml,Haske11,Er1ang和 JavaScript 。 也就是说,所要求保护的本主题中的某一些可以覆盖以C++类型语言、命名法和格式的具体编程表达式。所描述的实现中的某一些提供了将软件开发者置于对与数据并行资源的交互的许多方面的显式控制中的基本编程模型。开发者分配数据并行存储器资源并启动访问该存储器一系列数据并行调用点。在非数据并行资源和数据并行资源之间的数据传递是显式的且通常是异步的。所描述的实现提供了与以下各项的深度集成可编译的通用编程语言(例如, C++),以及适合根据问题域实体(例如,多维数组)而非硬件或平台域实体(例如,将偏移量捕捉到缓冲器中的C指针)来表达解决方案的抽象级。可以在诸如使用多核处理器或x64处理器中的SSE单元的那些数据并行硬件等的数据并行硬件上实现所描述的实施方式。可以在互连计算机的群集上实现一些所描述的实施方式,互连计算机中的每一个可能具有多个GPU和多个SSE/AVX (高级矢量扩展)/ LRBni (Larrabee新指令)SIMD和其他数据并行协处理器。以下共同所有的美国专利申请通过引用合并于此,并构成本申请的以部分于 2010年6月18日提交的美国专利申请第12/918,097号,。示例计算基础设施图1示出可以实现在此描述的技术的示例计算机体系结构100。体系结构100可以包括至少一个计算设备102,计算设备102可以经由网络104被耦合在一起以便与其他设备形成分布式系统。尽管不示出,但用户(通常是软件开发者)可以在编写数据并行(“DP”) 程序的同时操作计算设备。也不示出的是,计算设备102具有输入/输出子系统,例如键盘、 鼠标、监视器、扬声器等等。其间,网络104表示相互连接的充当单个大型网络(例如,因特网或内联网)的多中不同类型的网络中的任何一个或组合。网络104可以包括基于线缆的网络(例如,有线电视网络)和无线网络(例如,蜂窝式网络、卫星网络等等)。这一示例计算机体系结构100的计算设备1本文档来自技高网
...

【技术保护点】
1.一种促进数据并行(DP)可执行程序的产生的方法,所述方法包括:获得(202)对DP函数的调用的表示,其中所述表示包括与对所述DP函数的所述调用相关联的自变量的指示符;至少部分地基于所述DP函数表示及其关联的自变量生成(400)调用存根,所述调用存根包括将所述DP函数的DP计算的逻辑排列桥接到要在一个或多个计算设备的DP硬件上执行的DP计算的物理排列的计算机可执行指令。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:L·张W·朱Y·莱瓦诺尼P·F·林塞斯C·D·卡拉汉二世
申请(专利权)人:微软公司
类型:发明
国别省市:US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1