新书报道
当前位置: 首页 >> 电子电气计算机信息科学 >> 正文
C++AMP用Visual C++加速大规模并行计算
发布日期:2014-06-13  浏览

[内容简介]
  C++ AMP是Microsoft Visual Studio和C++编程语言的新扩展,用于帮助开发人员充分适应现在和未来的高度并行和异构计算环境。C++ AMP更易用,与C++配合得更好。《C++ AMP:用Visual C++加速大规模并行计算》的目标是帮助C++开发人员在理解C++ AMP核心概念的基础上,掌握更高级的功能。书中包含了C++ AMP程序开发的设计思路、使用方法、真实案例及代码示例,并提供了案例的源代码。通过学习《C++ AMP:用Visual C++加速大规模并行计算》,读者能理解如何在应用程序中最好地使用C++ AMP,还能利用Microsoft Visual Studio 2012提供的调试和剖析工具来解决问题、优化性能。
  《C++ AMP:用Visual C++加速大规模并行计算》的两位作者一位是有20多年C++实践经验的讲师、演讲人和作家,一位是微软工作室的首席软件架构师,他们有丰富的实践经验,因此,本书极具实际应用参考价值。《C++ AMP:用Visual C++加速大规模并行计算》适合专业C++异构编程人员及熟悉C++并希望从事并行编程及异构编程的开发人员。

[目 录]

第1章 C++ AMP概述 1
1.1 为什么选择GPGPU?什么是异构计算? 1
1.1.1 性能提升史 1
1.1.2 异构平台 2
1.1.3 GPU架构 3
1.1.4 通过并行性提升性能的候选方案 4
1.2 CPU并行技术 7
1.2.1 向量化 7
1.2.2 OpenMP 9
1.2.3 并发运行时库(ConcRT)和并行模式库 10
1.2.4 任务并行库 11
1.2.5 WARP-Windows高级栅格化平台 11
1.2.6 GPU并行技术 12
1.2.7 成功并行化的要求 13
1.3 C++ AMP方法 14
1.3.1 C++ AMP将GPGPU(以及更多)带进主流 14
1.3.2 C++ AMP是C++,而不是C 14
1.3.3 C++ AMP使用了我们熟识的工具 15
1.3.4 C++ AMP是一个近乎全面的代码库 15
1.3.5 C++ AMP可以生成可移植的、不会过时的执行代码 17
1.4 小结 18

第2章 Nbody案例 19
2.1 运行示例前的准备工作 19
2.2 运行Nbody示例 20
2.3 示例的结构 24
2.4 CPU计算 25
2.4.1 数据结构 25
2.4.2 wWinMain函数 26
2.4.3 OnFrameMove回调函数 26
2.4.4 OnD3D11CreateDevice回调函数 27
2.4.5 OnGUIEvent回调函数 29
2.4.6 OnD3D11FrameRender回调函数 30
2.5 CPU NBody类 30
2.5.1 NBodySimpleInteractionEngine 30
2.5.2 NBodySimpleSingleCore 31
2.5.3 NBodySimpleMultiCore 31
2.5.4 NBodySimpleInteractionEngine::BodyBodyInteraction 32
2.6 C++ AMP计算 33
2.6.1 数据结构 33
2.6.2 CreateTasks 35
2.7 C++ AMP NBody类 37
2.7.1 NBodyAmpSimple::Integrate 37
2.7.2 BodyBodyInteraction 38
2.8 小结 40

第3章 C++ AMP基础 41
3.1 array 41
3.2 accelerator与accelerator_view 43
3.3 index 45
3.4 extent 46
3.5 array_view 46
3.6 parallel_for_each 50
3.7 使用restrict(amp)标记的函数 52
3.8 在CPU和GPU之间复制数据 54
3.9 数学库函数 56
3.10 小结 57

第4章 分组 58
4.1 使用分组的目的和好处 58
4.2 tile_static内存 60
4.3 tiled_extent 60
4.4 tiled_index 62
4.5 将简单算法改成分组算法 63
4.5.1 使用tile_static内存 64
4.5.2 分组栅和同步 68
4.5.3 完成简单版本到分组版本的修改 70
4.6 分组大小的影响 71
4.7 选择分组大小 74
4.8 小结 75

第5章 分组NBody案例 76
5.1 分组功能对NBody的提速有多大帮助 76
5.2 N体问题的分组算法 77
5.2.1 NBodyAmpTiled类 78
5.2.2 NBodyAmpTiled::Integrate 79
5.3 使用Concurrency Visualizer 83
5.4 选择分组大小 88
5.5 小结 92

第6章 调试 93
6.1 第一步 93
6.1.1 选择GPU调试还是CPU调试 94
6.1.2 参考加速器 97
6.2 GPU调试基础 100
6.2.1 熟悉的窗口和技巧 100
6.2.2 Debug Location工具栏 101
6.2.3 检测竞态 101
6.3 检查线程运行状况 103
6.3.1 线程标记 104
6.3.2 GPU Threads窗口 105
6.3.3 Parallel Stacks窗口 107
6.3.4 Parallel Watch窗口 108
6.3.5 对线程置标记、分组和过滤 110
6.4 施加更多的控制 112
6.4.1 冻结与解冻线程 113
6.4.2 Run Tile to Cursor 114
6.5 小结 116

第7章 优化 117
7.1 一种性能优化方法 117
7.2 分析性能 118
7.2.1 测量内核性能 118
7.2.2 使

关闭


版权所有:西安交通大学图书馆      设计与制作:西安交通大学数据与信息中心  
地址:陕西省西安市碑林区咸宁西路28号     邮编710049

推荐使用IE9以上浏览器、谷歌、搜狗、360浏览器;推荐分辨率1360*768以上