在多核 GPU 和 CPU 上使用 Accelerator V2 执行并行编程

  • Abel Avram
  • 王波

2010 年 1 月 7 日

话题:.NET语言 & 开发架构

这是一项微软研究院的项目。回到 2006 年的时候,Accelerator 还只是一个简单的托管函数库,并且在 2007 年发布了第一个版本。刚开始的时候,它是用 C#编写并定位于 GPU。于此同时,它又被 C++ 封装为托管 API以方便其它.NET语言进行访问。

Accelerator V2 提供 API 以便在多核 GPU 和多核处理器上执行并行指令。同时,面向元件可编程逻辑闸阵列(FPGA)的版本也正在开发中。

微软高级研究员Satnam Singh已经发布了一个F# 程序,用以说明 Accelerator 在 8 核 64 位 Windows7 的机器上(另配了一个低端显卡)如何执行代码。该研究员示范如何用 F# 创建二维卷积处理器以及“该处理器是如何使用 F# 的 Accelerator 进行表述的”。这里的卷积是指:

映射一系列数组到数组各个元素的函数。

该研究员还解释代码如何执行卷积操作。最后,他还解释了 Accelerator 对他的帮助:

Accelerator 系统鼓励你以整个数组操作的方式来表述数据并行处理算法,对不同的后台程序(或“目标”)的实现更有效。例如,只使用整个数组操作的准则,可高效解决正在处理的实验 FPGA 对象的寻址生成器回路问题。

Accelerator 非常适合编写模板风格的数据并行处理程序。它的表达式能适应 Accelerator 计算,使得它非常适合 F# 那样的函数式语言。实际上,Accelerator 系统已证明,它自己类似于在 F#、C# 和 C++(及其他.NET 语言)中的一种特定领域编程语言。

运行 Accelerator V2 需要安装 DirectX 11。

相关资源下载:Accelerator v2预览版更新 2009-12-8Accelerator v2 F# 1 维卷积实例

查看英文原文:Executing Parallel Programs on Multi-core GPUs and CPUs with Accelerator V2

.NET语言 & 开发架构