C++ AMP:accelerated massive parallelism with Microsoft Visual C++
副标题:无
作 者:(美)Kate Gregory,(美)Ade Miller著;车皓阳,黄文龙译
分类号:
ISBN:9787115345035
微信扫一扫,移动浏览光盘
简介
1. 本书的两位作者一位是有20多年C++实践经验的讲师、演讲人和作家,一位是微软工作室的首席软件架构师,他们有丰富的实践经验,因此,本书极具实际应用参考价值。
2.本书的目标是帮助C++开发人员在理解C++ AMP核心概念的基础上,理解更高级的功能。书中包含了C++ AMP程序开发的设计思路、使用方法、真实案例及代码示例,并提供了案例的源代码。
3.通过本书的学习,读者能理解如何在应用程序中最好地使用C++ AMP,还能利用Microsoft Visual Studio 2012提供的调试和剖析工具来解决问题、优化性能。
目录
第1章 C++ AMP概述
1.1 为什么选择GPGPU?什么是异构计算?
1.1.1 性能提升史
1.1.2 异构平台
1.1.3 GPU架构
1.1.4 通过并行性提升性能的候选方案
1.2 CPU并行技术
1.2.1 向量化
1.2.2 OpenMP
1.2.3 并发运行时库(ConcRT)和并行模式库
1.2.4 任务并行库
1.2.5 WARP-Windows高级栅格化平台
1.2.6 GPU并行技术
1.2.7 成功并行化的要求
1.3 C++ AMP方法
1.3.1 C++ AMP将GPGPU(以及更多)带进主流
1.3.2 C++ AMP是C++,而不是C
1.3.3 C++ AMP使用了我们熟识的工具
1.3.4 C++ AMP是一个近乎全面的代码库
1.3.5 C++ AMP可以生成可移植的、不会过时的执行代码
1.4 小结
第2章 Nbody案例
2.1 运行示例前的准备工作
2.2 运行Nbody示例
2.3 示例的结构
2.4 CPU计算
2.4.1 数据结构
2.4.2 wWinMain函数
2.4.3 OnFrameMove回调函数
2.4.4 OnD3D11CreateDevice回调函数
2.4.5 OnGUIEvent回调函数
2.4.6 OnD3D11FrameRender回调函数
2.5 CPU NBody类
2.5.1 NBodySimpleInteractionEngine
2.5.2 NBodySimpleSingleCore
2.5.3 NBodySimpleMultiCore
2.5.4 NBodySimpleInteractionEngine::BodyBodyInteraction
2.6 C++ AMP计算
2.6.1 数据结构
2.6.2 CreateTasks
2.7 C++ AMP NBody类
2.7.1 NBodyAmpSimple::Integrate
2.7.2 BodyBodyInteraction
2.8 小结
第3章 C++ AMP基础
3.1 array
3.2 accelerator与accelerator_view
3.3 index
3.4 extent
3.5 array_view
3.6 parallel_for_each
3.7 使用restrict(amp)标记的函数
3.8 在CPU和GPU之间复制数据
3.9 数学库函数
3.10 小结
第4章 分组
4.1 使用分组的目的和好处
4.2 tile_static内存
4.3 tiled_extent
4.4 tiled_index
4.5 将简单算法改成分组算法
4.5.1 使用tile_static内存
4.5.2 分组栅和同步
4.5.3 完成简单版本到分组版本的修改
4.6 分组大小的影响
4.7 选择分组大小
4.8 小结
第5章 分组NBody案例
5.1 分组功能对NBody的提速有多大帮助
5.2 N体问题的分组算法
5.2.1 NBodyAmpTiled类
5.2.2 NBodyAmpTiled::Integrate
5.3 使用Concurrency Visualizer
5.4 选择分组大小
5.5 小结
第6章 调试
6.1 第一步
6.1.1 选择GPU调试还是CPU调试
6.1.2 参考加速器
6.2 GPU调试基础
6.2.1 熟悉的窗口和技巧
6.2.2 Debug Location工具栏
6.2.3 检测竞态
6.3 检查线程运行状况
6.3.1 线程标记
6.3.2 GPU Threads窗口
6.3.3 Parallel Stacks窗口
6.3.4 Parallel Watch窗口
6.3.5 对线程置标记、分组和过滤
6.4 施加更多的控制
6.4.1 冻结与解冻线程
6.4.2 Run Tile to Cursor
6.5 小结
第7章 优化
7.1 一种性能优化方法
7.2 分析性能
7.2.1 测量内核性能
7.2.2 使用Concurrency Visualizer
7.2.3 使用Concurrency Visualizer SDK
7.3 优化内存访问模式
7.3.1 别名和parallel_for_each调用
7.3.2 往返GPU的高效数据复制
7.3.3 高效加速器全局内存访问
7.3.4 结构体数组与数组结构体
7.3.5 高效的分组静态内存访问
7.3.6 常量内存
7.3.7 纹理内存
7.3.8 占用比和寄存器
7.4 优化计算
7.4.1 避免分支代码
7.4.2 选择合适的精度
7.4.3 数学运算的成本估算
7.4.4 循环展开
7.4.5 障栅
7.4.6 排队模式
7.5 小结
第8章 性能案例——归约
8.1 问题
8.2 示例的结构
8.2.1 初始化和负载
8.2.2 Concurrency Visualizer标记
8.2.3 TimeFunc()
8.2.4 开销
8.3 CPU算法
8.3.1 串行算法
8.3.2 并行算法
8.4 C++ AMP算法
8.4.1 简单版本
8.4.2 使用array_view的简单版本
8.4.3 简单优化版本
8.4.4 原始分组版本
8.4.5 共享内存的分组版本
8.4.6 使分支数降至最低的版本
8.4.7 消除槽位冲突版本
8.4.8 减少停滞线程版本
8.4.9 循环展开版本
8.4.10 级联归约版本
8.4.11 带循环展开的级联归约版本
8.5 小结
第9章 使用多个加速器工作
9.1 选择加速器
9.2 使用一个以上的GPU
9.3 在加速器之间交换数据
9.4 动态负载均衡
9.5 交织并行性
9.6 回退到CPU执行
9.7 小结
第10章 Cartoonizer案例
10.1 前提条件
10.2 运行示例
10.3 示例的结构
10.4 流水线
10.4.1 数据结构
10.4.2 CartoonizerDlg::OnBnClickedButtonStart()方法
10.4.3 ImagePipeline类
10.5 流水线卡通化阶段
10.5.1 ImageCartoonizerAgent类
10.5.2 IFrameProcessor实现
10.6 使用多个C++ AMP加速器工作
10.6.1 FrameProcessorAmpMulti类
10.6.2 复制流水线
10.6.3 ImageCartoonizerAgentParallel类
10.7 卡通器性能
10.8 小结
第11章 图形互操作
11.1 基础知识
11.1.1 norm与unorm
11.1.2 短向量类型
11.1.3 texture
11.1.4 writeonly_texture_view
11.1.5 纹理与数组
11.2 使用纹理和短向量
11.3 HLSL内建函数
11.4 DirectX互操作
11.4.1 加速器视图与Direct3D设备互操作
11.4.2 数组与Direct3D设备互操作
11.4.3 纹理与Direct3D纹理资源互操作
11.4.4 使用图形互操作库
11.5 小结
第12章 提示、技巧与最佳实践
12.1 处理分组大小不匹配的问题
12.1.1 填充分组
12.1.2 截取分组
12.1.3 对比方法
12.2 初始化数组
12.3 函数对象与lambda函数
12.4 原子操作
12.5 Windows 8上其他的C++ AMP功能
12.6 超时检测与恢复
12.6.1 避免TDR
12.6.2 在Windows 8上取消TDR
12.6.3 检测TDR和从TDR中恢复
12.7 双精度支持
12.7.1 有限双精度支持
12.7.2 完整双精度支持
12.8 在Windows 7上调试
12.8.1 配置远程计算机
12.8.2 配置项目
12.8.3 部署和调试项目
12.9 其他调试函数
12.10 部署
12.10.1 部署应用程序
12.10.2 在服务器上运行C++ AMP
12.11 C++ AMP与Windows 8的Windows应用商店
12.12 在托管代码中使用C++ AMP
12.12.1 从.NET应用程序、Windows 7 Windows应用商店或库中调用
12.12.2 从C++ CLR应用程序中调用
12.12.3 从C++ CLR项目中调用
12.13 小结
附录 其他资源
显示全部信息
1.1 为什么选择GPGPU?什么是异构计算?
1.1.1 性能提升史
1.1.2 异构平台
1.1.3 GPU架构
1.1.4 通过并行性提升性能的候选方案
1.2 CPU并行技术
1.2.1 向量化
1.2.2 OpenMP
1.2.3 并发运行时库(ConcRT)和并行模式库
1.2.4 任务并行库
1.2.5 WARP-Windows高级栅格化平台
1.2.6 GPU并行技术
1.2.7 成功并行化的要求
1.3 C++ AMP方法
1.3.1 C++ AMP将GPGPU(以及更多)带进主流
1.3.2 C++ AMP是C++,而不是C
1.3.3 C++ AMP使用了我们熟识的工具
1.3.4 C++ AMP是一个近乎全面的代码库
1.3.5 C++ AMP可以生成可移植的、不会过时的执行代码
1.4 小结
第2章 Nbody案例
2.1 运行示例前的准备工作
2.2 运行Nbody示例
2.3 示例的结构
2.4 CPU计算
2.4.1 数据结构
2.4.2 wWinMain函数
2.4.3 OnFrameMove回调函数
2.4.4 OnD3D11CreateDevice回调函数
2.4.5 OnGUIEvent回调函数
2.4.6 OnD3D11FrameRender回调函数
2.5 CPU NBody类
2.5.1 NBodySimpleInteractionEngine
2.5.2 NBodySimpleSingleCore
2.5.3 NBodySimpleMultiCore
2.5.4 NBodySimpleInteractionEngine::BodyBodyInteraction
2.6 C++ AMP计算
2.6.1 数据结构
2.6.2 CreateTasks
2.7 C++ AMP NBody类
2.7.1 NBodyAmpSimple::Integrate
2.7.2 BodyBodyInteraction
2.8 小结
第3章 C++ AMP基础
3.1 array
3.2 accelerator与accelerator_view
3.3 index
3.4 extent
3.5 array_view
3.6 parallel_for_each
3.7 使用restrict(amp)标记的函数
3.8 在CPU和GPU之间复制数据
3.9 数学库函数
3.10 小结
第4章 分组
4.1 使用分组的目的和好处
4.2 tile_static内存
4.3 tiled_extent
4.4 tiled_index
4.5 将简单算法改成分组算法
4.5.1 使用tile_static内存
4.5.2 分组栅和同步
4.5.3 完成简单版本到分组版本的修改
4.6 分组大小的影响
4.7 选择分组大小
4.8 小结
第5章 分组NBody案例
5.1 分组功能对NBody的提速有多大帮助
5.2 N体问题的分组算法
5.2.1 NBodyAmpTiled类
5.2.2 NBodyAmpTiled::Integrate
5.3 使用Concurrency Visualizer
5.4 选择分组大小
5.5 小结
第6章 调试
6.1 第一步
6.1.1 选择GPU调试还是CPU调试
6.1.2 参考加速器
6.2 GPU调试基础
6.2.1 熟悉的窗口和技巧
6.2.2 Debug Location工具栏
6.2.3 检测竞态
6.3 检查线程运行状况
6.3.1 线程标记
6.3.2 GPU Threads窗口
6.3.3 Parallel Stacks窗口
6.3.4 Parallel Watch窗口
6.3.5 对线程置标记、分组和过滤
6.4 施加更多的控制
6.4.1 冻结与解冻线程
6.4.2 Run Tile to Cursor
6.5 小结
第7章 优化
7.1 一种性能优化方法
7.2 分析性能
7.2.1 测量内核性能
7.2.2 使用Concurrency Visualizer
7.2.3 使用Concurrency Visualizer SDK
7.3 优化内存访问模式
7.3.1 别名和parallel_for_each调用
7.3.2 往返GPU的高效数据复制
7.3.3 高效加速器全局内存访问
7.3.4 结构体数组与数组结构体
7.3.5 高效的分组静态内存访问
7.3.6 常量内存
7.3.7 纹理内存
7.3.8 占用比和寄存器
7.4 优化计算
7.4.1 避免分支代码
7.4.2 选择合适的精度
7.4.3 数学运算的成本估算
7.4.4 循环展开
7.4.5 障栅
7.4.6 排队模式
7.5 小结
第8章 性能案例——归约
8.1 问题
8.2 示例的结构
8.2.1 初始化和负载
8.2.2 Concurrency Visualizer标记
8.2.3 TimeFunc()
8.2.4 开销
8.3 CPU算法
8.3.1 串行算法
8.3.2 并行算法
8.4 C++ AMP算法
8.4.1 简单版本
8.4.2 使用array_view的简单版本
8.4.3 简单优化版本
8.4.4 原始分组版本
8.4.5 共享内存的分组版本
8.4.6 使分支数降至最低的版本
8.4.7 消除槽位冲突版本
8.4.8 减少停滞线程版本
8.4.9 循环展开版本
8.4.10 级联归约版本
8.4.11 带循环展开的级联归约版本
8.5 小结
第9章 使用多个加速器工作
9.1 选择加速器
9.2 使用一个以上的GPU
9.3 在加速器之间交换数据
9.4 动态负载均衡
9.5 交织并行性
9.6 回退到CPU执行
9.7 小结
第10章 Cartoonizer案例
10.1 前提条件
10.2 运行示例
10.3 示例的结构
10.4 流水线
10.4.1 数据结构
10.4.2 CartoonizerDlg::OnBnClickedButtonStart()方法
10.4.3 ImagePipeline类
10.5 流水线卡通化阶段
10.5.1 ImageCartoonizerAgent类
10.5.2 IFrameProcessor实现
10.6 使用多个C++ AMP加速器工作
10.6.1 FrameProcessorAmpMulti类
10.6.2 复制流水线
10.6.3 ImageCartoonizerAgentParallel类
10.7 卡通器性能
10.8 小结
第11章 图形互操作
11.1 基础知识
11.1.1 norm与unorm
11.1.2 短向量类型
11.1.3 texture
11.1.4 writeonly_texture_view
11.1.5 纹理与数组
11.2 使用纹理和短向量
11.3 HLSL内建函数
11.4 DirectX互操作
11.4.1 加速器视图与Direct3D设备互操作
11.4.2 数组与Direct3D设备互操作
11.4.3 纹理与Direct3D纹理资源互操作
11.4.4 使用图形互操作库
11.5 小结
第12章 提示、技巧与最佳实践
12.1 处理分组大小不匹配的问题
12.1.1 填充分组
12.1.2 截取分组
12.1.3 对比方法
12.2 初始化数组
12.3 函数对象与lambda函数
12.4 原子操作
12.5 Windows 8上其他的C++ AMP功能
12.6 超时检测与恢复
12.6.1 避免TDR
12.6.2 在Windows 8上取消TDR
12.6.3 检测TDR和从TDR中恢复
12.7 双精度支持
12.7.1 有限双精度支持
12.7.2 完整双精度支持
12.8 在Windows 7上调试
12.8.1 配置远程计算机
12.8.2 配置项目
12.8.3 部署和调试项目
12.9 其他调试函数
12.10 部署
12.10.1 部署应用程序
12.10.2 在服务器上运行C++ AMP
12.11 C++ AMP与Windows 8的Windows应用商店
12.12 在托管代码中使用C++ AMP
12.12.1 从.NET应用程序、Windows 7 Windows应用商店或库中调用
12.12.2 从C++ CLR应用程序中调用
12.12.3 从C++ CLR项目中调用
12.13 小结
附录 其他资源
显示全部信息
C++ AMP:accelerated massive parallelism with Microsoft Visual C++
- 名称
- 类型
- 大小
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×