微软发布C++ AMP规范,旨在降低数据并行门槛

fmms 13年前
     <p> 微软在他们的 GoingNative 2012 大会上为其C++ AMP(C++加速大规模并行处理)发布了开放<a href="/misc/goto?guid=4958330547983569661">规范(PDF)</a>。C++ AMP 被描述成“一种能够在数据并行硬件上加速 C++ 代码的编程模型”。而这类硬件中最常见的例子要属独立显卡上能够使用多核或 SSE CPU 作为替代选择的 GPU 了。</p>    <p> 微软声明的C++ AMP 编程模型如下:</p>    <blockquote>     <p>……给你上面几个方面的显式控制,包括:在 CPU 和加速器之间进行数据拷贝,以及在 GPU 上执行计算。你可以显式地管理 CPU 和加速器间的所有通信。这类通信既可以是同步的也可以是异步的。加速器中的数据并行计算,可以通过使用多维数组、高层次数组操作函数、多维索引操作以及其他高层次抽象进行表示。所有这些表示都是基于 C++ 编程语言的一个大型子集。该编程模型包含了多个层次,以便你可以在易用性和最大性能之间进行权衡。</p>    </blockquote>    <p> 微软对此标准的实现适用于任何运行 DirectX 11 的系统,而如果系统没有 DirectX 11,那么会有一段非 C++ 的代码被执行。</p>    <p> 微软并不打算把C++ AMP 只面向 Windows,因为它“支持并鼓励<strong>任何人</strong>在<strong>任何平台</strong>上实现C++ AMP 开放规范……”(摘自<a href="/misc/goto?guid=4958330548782286944">原文</a>)。迄今为止,该项目折射出的贡献者来自于 Nvidia 和 AMD。为了鼓励外部实现,微软在其“<a href="/misc/goto?guid=4958330549571818962">微软社区承诺协议</a>”下发布了整个C++ AMP 规范。</p>    <p> 虽然微软的实现支持C++ AMP 和 Direct 3D 之间的互操作性,但是正式规范中并没有要求这点。另外,目前C++ AMP 还不支持与 OpenGL 的互操作,开发人员 Daniel Month 最近在论坛一个贴子中<a href="/misc/goto?guid=4958330550359408388">指出</a>,这项支持并不会即刻到来,因为“(C++ AMP 团队)中没有人有 OpenGL 的经验”。</p>    <p> 对于想要尝试新的C++ AMP 编程模型的开发人员,可以先<a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27543">下载</a>Visual Studio 11 开发者预览版,然后查看<a href="/misc/goto?guid=4958330551880856489">这篇</a>MSDN 博客文章中给出的样例代码。(代码中的例子还包含了 .NET 开发人员如何从 C# 中使用C++ AMP。)</p>    <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958330552672112930">http://www.infoq.com/news/2012/02/CPP_AMP_Published</a></p>    <div id="come_from">     来自:     <a id="link_source2" href="/misc/goto?guid=4958330553468223562" target="_blank">InfoQ</a>    </div>