前言
C++ AMP:用Visual C++加速大规模并行计算
C++加速大规模并行计算(C++ Accelerated Massive Parallelism,C++ AMP)是微软公司发布的一套C++应用程序加速技术,使用C++ AMP编写的代码可以有效地在图形处理器(Graphics-processing Unit,GPU)等支持数据并行的硬件上运行。C++ AMP的定位不仅是要适应现代GPU和APU等并行硬件,而且还要保证应用代码未来的投资效用,对新近的并行硬件提供必要的支持。同时,C++ AMP还是一种开放规范。微软的实现是基于DirectX构建的,支持跨不同硬件平台移植。其他实现版本也可以基于其他技术构建,因为规范本身并没有强制要求必须使用DirectX。
C++ AMP编程模型包含了类似现代C++ STL的模板库以及两项C++语言扩展,它们都是Visual C++ 2012编译器的集成组件。Visual Studio工具集对C++ AMP提供了全面支持,它的IntelliSense具有编辑、调试和剖析的功能。C++ AMP使异构硬件成为主流,降低了它们的编程门槛,保证了程序员的开发效率。
本书要讲的是如何在应用程序中使用C++ AMP。本书除了阐述C++ AMP的功能以外,还包含几个案例,演示了几个实际的应用程序实现,以及如何使用各种不同的方法去实现某些常见算法。读者可以下载这些案例的源代码以及每章的示例代码自己探索。
第1章 C++ AMP概述
1.1 为什么选择GPGPU?什么是异构计算?
1.2 CPU并行技术
1.3 C++ AMP方法
1.4 小结
第3章 C++ AMP基础
3.1 array < T,N >
3.2 accelerator与accelerator_view
3.3 index< N >
3.4 extent< N >
3.5 array_view< T,N >
3.6 parallel_for_each
3.7 使用restrict(amp)标记的函数
3.8 在CPU和GPU之间复制数据
3.9 数学库函数
3.10 小结