本申请涉及共同映射通信算子。高级编程语言提供了根据函数将输入可索引类型映射到输出可索引类型的共同映射通信算子。该函数将对应于输出可索引类型的索引空间映射到对应于输入可索引类型的索引空间。通过这样做,共同映射的通信算子将索引空间上的函数提升到可索引类型上的函数以容许与其他通信算子的可组成性。
【技术实现步骤摘要】
本申请涉及共同映射(co-map)通信算子。
技术介绍
计算机系统通常包括一个或多个通用处理器(例如,中央处理器(CPU))以及一个或多个专用数据并行计算节点(例如,图形处理单元(GPU)或CPU中的单指令多数据(SIMD)执行单元)。通用处理器通常在计算机系统上执行通用处理,而数据并行计算节点通常在计算机系统上执行数据并行处理(例如图形处理)。通用处理器通常具有实现数据并行算法的能力,但是在没有在数据并行计算节点中发现的优化的硬件资源的情况下这样做。结果,通用处理器在执行数据并行算法时可能比数据并行计算节点低效得多。 数据并行计算节点传统地在计算机系统上执行程序方面扮演通用处理器的辅助角色。随着为数据并行算法优化的硬件的角色由于数据并行计算节点处理能力的增强而增力口,增强程序员对数据并行计算节点进行编程的能力并使对数据并行计算节点进行编程变得更为容易可能是合乎需要的。数据并行算法经常在较大的计算空间上操作。计算空间一般包括某种形式的索引来容许访问个别的数据元素并在其上进行操作。然而,有时数据并行算法可通过在计算空间的索引结构上操作而不是在数据元素上操作而产生期望的结果。
技术实现思路
提供本
技术实现思路
以便以简化的形式介绍将在以下的具体实施方式中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。高级编程语言提供了根据函数将输入可索引的类型映射到输出可索引类型的共同映射的通信算子。该函数将对应于输出可索引类型的索引空间映射到对应于输入可索引类型的索引空间。通过这样做,共同映射的通信算子将索引空间上的函数提升到可索引类型上的函数以容许与其他通信算子的可组成性。附图说明包括附图来提供了对各实施例的进一步理解,且这些附图被合并在本专利技术书内并构成其一部分。附图示出各实施例,并且与说明书一起用于解释本专利技术的原理。其他实施例和各实施例的许多预期优点将随着参考下面的详细描述进行更好的理解而得到认识。附图的元素不一定相对于彼此而缩放。相同的附图标记指代对应的类似部分。图I是示出具有共同映射通信算子的代码的实施例的计算机代码图。图2是示出了将共同映射通信算子应用到输入可索引类型的实施例的框图。图3A-3C是示出使用共同映射的通信算子的示例的框图。图4是示出被配置成编译并执行包括共同映射通信算子的数据并行代码的计算机系统的实施例的框图。具体实施例方式在以下具体实施例中,对附图进行了参考,附图构成了实施例的一部分且在其中作为示例示出了可在其中实践本专利技术的各特定实施例。就此,诸如“顶部”、“底部”、“前方”、“后方”、“前导”、“尾部”等的方向性术语参考正在描述的附图的方向来使用。因为实施例的各组件可位于多个不同的方向,所以方向性术语出于说明的目的来使用而不是限制。可以理解,可以使用其它实施例并且可以做出结构上或逻辑上的改变而不背离本专利技术的范围。因此,以下详细描述并不旨在限制,并且本专利技术的范围由所附权利要求来限定。应该理解,此处描述的各示例性实施例的特征可相互组合,除非另外具体注明。图I是示出具有共同映射通信算子12的代码10的实施例的计算机代码图。当被编译和执行的时候,共同映射通信算子12根据函数13将输入可映射类型14映射到输出可映射类型18 (下文中定义)。函数13将对应于输出可索引类型18的索引空间15映射到对应于输入可索引类型14的索引空间17。通过这样做,共同映射的通信算子12将索引空间上的函数13提升到可索引类型14上的函数,以容许与其他通信算子的可组成性。代码10包括来自高级通用或数据并行编程语言的可被编译成一个或多个可执行代码(例如,图4中所示的DP可执行代码138)用于由一个或多个DP最优计算节点(例如,图4所示的DP最优计算节点121)执行的指令序列。在一个实施例中,代码10包括来自具有数据并行扩展的高级通用编程语言(之后称为GP语言)的指令序列,所述指令序列形成存储在一个或多个模块的集合中的程序。GP语言可允许程序被编写在不同部分(即模块)中,使得每个模块都可以被存储在可以由计算机系统访问的分开的文件或者位置中。GP语言提供用于对包括一个或多个通用处理器和一个或多个专用的DP最优计算节点的计算环境进行编程的单个语言。DP最优计算节点通常是通用处理器的图形处理单元(GPU)或SMD单元,但也可包括通用处理器的标量或矢量执行单元、场可编程门矩阵(FPGA)或一些计算环境中的其他合适设备。使用GP语言,程序员可将通用处理器和DP源代码均包含在代码10中以便由通用处理器和DP计算节点分别执行,并协调通用处理器和DP源代码的执行。在该实施例中,代码10可以表示任何合适类型的代码,诸如应用、库函数或操作系统服务。GP语言可以通过扩展诸如C或C++之类的广泛适用的高级且通用的编程语言以包括数据并行特征来形成。其中可出现DP特征的通用语言的其他示例包括Java 、PHP、Visual Basic、Perl、Python 、C#、Ruby、Delphi、Fortran、VB、F#、OCaml、Haskell、Erlang、NESL、Chapel以及JavaScript 。GP语言的实现可包括允许程序的不同部分被包括在不同模块中的丰富链接能力。数据并行特征提供了利用DP最优计算节点的专用体系结构来允许数据并行操作比使用通用处理器(即,非DP最优计算节点)更快或更有效地执行的编程工具。GP语言也可以是允许程序员对通用处 理器和DP最优计算节点两者均进行编程的另一合适的高级通用编程语言。在另一个实施例中,代码10包括来自高级数据并行编程语言(此后称DP语言)的形成程序的指令序列。DP语言提供了用于对具有一个或多个DP最优计算节点的计算环境中的DP最优计算节点进行编程的专用语言。使用DP语言,程序员在代码10中生成旨在供在DP最优计算节点上执行的DP源代码。DP语言提供了利用DP最优计算节点的专用体系结构来允许数据并行操作比使用通用处理器更快或更有效地执行的编程工具。DP语言可以是现有的DP编程语言,诸如HLSL、GLSL、Cg、C、C++、NESL, Chapel、CUDA,OpenCL、Accelerator (加速器)、Ct、PGI GPGPU Accelerator (加速器)、CAPS GPGPUAccelerator (加速器)、Brook+、CAL> APL> Fortran 90 (以及更高版本)、Data ParallelC (数据并行C)、DAPPLE或APL。在该实施例中,代码10可以表示任何合适类型的DP源代码,诸如应用、库函数或操作系统服务。代码10包括被指定为在DP最优计算节点上执行的代码部分。在使用GP语言来编写代码10的图I的实施例中,GP语言允许程序员在定义矢量函数时使用注释26(例如,—dec I spec (vector)...)来指定DP源代码。注释26与旨在供在DP最优计算节点上执行的矢量函数的函数名27(例如vector_func)相关联。代码10还可包括在调用点(诸如,foralll (对于全部),reduce (缩减),scan(扫描),或sort (排序))处对矢量函数的一个或多个调用28 (例本文档来自技高网...
【技术保护点】
【技术特征摘要】
...
【专利技术属性】
技术研发人员:P·F·林塞斯,Y·莱瓦诺尼,张玲莉,朱伟荣,D·J·麦克拉迪,
申请(专利权)人:微软公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。