当前位置:首页 > 工业技术
Intel Parallel Studio环境下的并行程序设计
Intel Parallel Studio环境下的并行程序设计

Intel Parallel Studio环境下的并行程序设计PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:(美)布莱尔查普尔,(美)斯托克斯著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302309765
  • 页数:429 页
图书介绍:本书在介绍Intel Parallel Studio XE的过程中是按照串行代码的并行化改造的四步骤为主线展开的。按照热点代码的定位、添加并行语法构造、错误检查(调试)、性能调优的流程,以样例代码为素材,以Parallel Studio XE为工具,实施这四个步骤完成串行应用的并行改造。
《Intel Parallel Studio环境下的并行程序设计》目录

第1篇 并行简介 3

第1章 并行现状 3

1.1并行时代的到来 3

1.1.1功率密度的飙升 3

1.1.2多核和众核计算的出现 4

1.2六大挑战 5

1.2.1遗留代码 6

1.2.2工具 6

1.2.3教育培训 6

1.2.4众核计算的顾虑 7

1.2.5可维护性 7

1.2.6投入产出 7

1.3并行与编程者 7

1.3.1并行的类型 8

1.3.2 Intel的并行模型 8

1.3.3选择正确的并行构造 10

1.3.4并行编程错误 13

1.3.5加速比和可扩展性 16

1.3.6并行与实时系统 19

1.4小结 20

第2章 Parallel Studio XE概览 21

2.1 Parallel Studio XE的优势 21

2.2 Parallel Studio XE组成 21

2.3 Intel Parallel Studio XE 22

2.4 Intel Parallel Advisor 23

2.4.1 Advisor工作流程 23

2.5 Intel Parallel Composer XE 26

2.5.1 Intel C/C++++优化编译器 26

2.5.2 OpenMP 31

2.5.3 Intel的线程构造块 32

2.5.4 Intel的集成性能原语 33

2.5.5 Intel的Parallel Debugger Extension 35

2.5.6 Intel Debugger 36

2.5.7数学核心库MKL 36

2.6 VTune Amplifiier XE 38

2.6.1热点分析 38

2.6.2并发性分析 39

2.6.3锁和空闲分析 39

2.6.4反汇编源码视图 40

2.7 Parallel Inspector XE 40

2.7.1预定义分析类型 40

2.7.2错误与警告 41

2.8静态安全性分析 42

2.9各种使用Parallel Studio XE的方法 43

2.10小结 43

第3章 Parallel Studio XE快速上手 44

3.1四步骤方法 44

3.2例子1:使用Cilk Plus 45

3.2.1找一个合适的串行程序 45

3.2.2运行串行程序 47

3.2.3步骤1:分析串行程序 49

3.2.4步骤2:用Cilk Plus实现并行性 52

3.2.5步骤3:调试及错误检查 53

3.2.6步骤4:对Cilk Plus程序调优 59

3.3例子2:使用OpenMP 61

3.3.1步骤1:分析串行程序 61

3.3.2步骤2:使用OpenMP实现并行性 62

3.3.3步骤3:调试与错误检查 63

3.3.4步骤4: OpenMP程序的调优 64

3.4小结 71

第2篇 Parallel Studio XE教程 75

第4章 生成优质的代码 75

4.1引言 75

4.2应用程序样例 76

4.3代码优化的七步骤 77

4.3.1使用编译器的报告 77

4.3.2步骤1:不使用优化技术构建应用程序 78

4.3.3步骤2:使用通用优化 80

4.3.4步骤3:使用处理器相关的优化 83

4.3.5步骤4:增加过程间优化 93

4.3.6步骤5:性能测评指导的优化 96

4.3.7步骤6:自动向量化的调优 100

4.4更多关于自动向量化的内容 102

4.4.1构建可以在多种CPU上运行的应用程序 102

4.4.2其他插入向量化的方法 103

4.5源代码 108

4.6小结 113

第5章 编写安全的代码 114

5.1一个简单的安全缺陷例子 114

5.2了解静态安全分析 117

5.2.1虚警 118

5.2.2静态安全分析流程 118

5.2.3实施一次静态安全分析 119

5.3构建的明细 126

5.3.1用注入方式创建构建明细文件 126

5.4在QA环境中使用静态安全分析 129

5.4.1回归测试 130

5.4.2度量跟踪 130

5.5源代码 132

5.6小结 134

第6章 在何处并行化 135

6.1性能测评的不同方法 135

6.2示例应用程序 136

6.3使用Intel编译器进行热点分析 138

6.3.1性能测评步骤 138

6.3.2一个具体的例子 139

6.3.3性能测评引起的开销 142

6.4使用auto-parallelizer进行热点分析 143

6.4.1测评步骤 143

6.4.2一个具体的例子 144

6.4.3自动并行化编程指南 146

6.5使用Amplifiier XE进行热点分析 149

6.5.1进行默认分析 149

6.5.2找到适合并行化的循环 149

6.5.3大型或运行时间长的应用程序 151

6.6源代码 153

6.7小结 157

第7章 实现并行化 158

7.1 C还是C+++,这是个问题 159

7.2一个简单的方法 159

7.3 lambda函数之美 160

7.4循环并行化 161

7.4.1 for循环 161

7.4.2嵌套for循环 164

7.4.3归约for循环 166

7.4.4 while循环 167

7.5代码段和函数并行化 169

7.5.1串行版本 170

7.5.2 Cilk Plus 171

7.5.3 OpenMP 172

7.5.4 TBB 173

7.6递归函数并行化 173

7.6.1串行版本 174

7.6.2 Cilk Plus 175

7.6.3 OpenMP 175

7.6.4 TBB 176

7.7流水应用程序并行化 177

7.7.1并行流水模式 177

7.7.2串行版本 179

7.7.3 OpenMP 180

7.7.4 TBB 181

7.8链表并行化 183

7.8.1链表的串行遍历 184

7.8.2链表的并行遍历 184

7.9源代码 186

7.10小结 190

第8章 检查错误 191

8.1 Parallel Inspector XE分析的类型 191

8.2检测线程错误 192

8.2.1线程问题的类型 193

8.2.2一个包含死锁的例子 193

8.3检测死锁 194

8.4检测数据竞争 197

8.4.1运行线程化的程序 197

8.4.2第一次分析结果 198

8.4.3控制报告的详细程度 200

8.5消除数据竞争 205

8.5.1使用Cilk Plus 205

8.5.2使用OpenMP 208

8.5.3使用TBB 208

8.6检测内存错误 210

8.6.1内存错误的类型 210

8.6.2一个内存分析的例子 211

8.7创建自定义分析 216

8.8源代码 217

8.9小结 220

第9章 并行程序的调优 222

9.1简介 222

9.2定义基准 223

9.2.1确保一致性 223

9.2.2度量性能的提升 223

9.2.3使用Amplifiier XE命令行测出基准 223

9.3识别并发热点 225

9.3.1线程的并发度和CPU使用率 225

9.3.2识别代码中的热点 226

9.4分析时间轴 228

9.4.1问题回答 228

9.4.2修复临界区热点 229

9.5分析算法 231

9.6进一步分析和调优 233

9.6.1使用其他视图 236

9.6.2使用锁和等待分析 237

9.6.3其他分析类型 238

9.7使用Intel Software Autotuning Tool 239

9.8源代码 240

9.9小结 243

第10章 Parallel Advisor设计指导 244

10.1使用Parallel Advisor 244

10.1.1理解Advisor的工作流程 245

10.1.2寻找文档 246

10.1.3从NQueens例子程序开始 246

10.2位置审查 248

10.2.1运行审查分析 248

10.2.2位置审查分析是如何工作的 251

10.3标注代码 252

10.3.1部位(Site)的标注 252

10.3.2锁的标注 254

10.3.3添加标注 254

10.4检测合适度 256

10.4.1执行合适度分析 257

10.4.2合适度分析是如何工作的 260

10.5检查正确性 261

10.5.1运行正确性分析 261

10.5.2正确性分析的局限性 267

10.5.3正确性分析是如何工作的 267

10.6替换标注 269

10.6.1 Summary Report 270

10.6.2普通的映射方法 270

10.7小结 273

第11章 并行程序的调试 274

11.1 Intel Debugger简介 274

11.2使用Intel调试器来检测数据竞争 276

11.2.1编译串行程序 276

11.2.2添加并行化 277

11.2.3观察结果 279

11.2.4检测数据竞争 280

11.2.5修复数据竞争 287

11.3关于过滤器的更多内容 294

11.4运行时检查:查看应用程序状态 295

11.4.1使用OpenMP任务窗口来检查一个并行域的变量 296

11.4.2使用OpenMP生成树窗口来查看并行代码的行为 297

11.5小结 300

第12章 基于事件的VTune Amplifiier XE分析 301

12.1测试一个应用的健壮性 301

12.1.1导致高CPI的原因 302

12.1.2只用CPI就足够测量健壮性吗 302

12.1.3进行全系统的分析 303

12.2进行一次热点分析 304

12.2.1热点分析类型 305

12.3进行一次General Exploration分析 310

12.3.1快速注解栏 312

12.4修复硬件问题 314

12.4.1减少缓存未命中 315

12.4.2使用更多高效指令 317

12.4.3使用Intel编译器 318

12.5使用Amplifiier XE的其他工具 319

12.5.1使用预定义分析类型 320

12.5.2使用视图 320

12.5.3使用API 321

12.6应用程序实例 325

12.7小结 329

第3篇 案例分析 333

第13章 世界上第一个数独“Thirty-Niner” 333

13.1挑战数独优化 333

13.1.1所面临挑战的性质 334

13.1.2顶层设计 334

13.1.3使用SSE内置函数优化求解器 335

13.1.4对生成器进行并行化 337

13.1.5结果 338

13.2动手实例:优化数独生成器 339

13.2.1关于代码 339

13.2.2求解器 340

13.2.3生成器 344

13.3小结 350

第14章 通往并行编程殿堂的九条建议 351

14.1挑战:模拟恒星形成 351

14.1.1恒星的形成 352

14.2动手练习 352

14.2.1性能调优 353

14.3应用程序的启发性 353

14.3.1查找热点 354

14.3.2使用一个基于树的N-物体模拟 356

14.3.3使用哈希八叉树 358

14.4架构调优 359

14.5添加并行化 362

14.5.1识别出热点和找出调用顺序 362

14.5.2实现并行化 363

14.5.3检测数据竞争和其他潜在的问题 364

14.5.4负载均衡 365

14.5.5执行结果 366

14.6小结 367

第15章CERN对撞机的并行轨迹拟合 368

15.1学习案例 368

15.2一个高能物理实验的过程 368

15.2.1轨迹重构阶段 369

15.3什么是ArBB 374

15.4并行化轨迹拟合代码 376

15.4.1添加数组构建块到已存的代码之中 376

15.4.2代码重构 377

15.4.3结果 380

15.5动手练习项目 385

15.5.1练习 385

15.5.2项目 385

15.5.3编译并运行串行版本 385

15.5.4并行化轨迹拟合代码 389

15.6小结 405

第16章 遗留代码的并行化 406

16.1 Dhrystone基准简介 406

16.1.1代码的结构 407

16.1.2全局和共享变量 407

16.2动手练习项目 408

16.2.1编译项目 408

16.2.2在Dhrystone循环中增加Amplifiier XE API来增加时间戳 410

16.2.3查看结果 411

16.3并行化基准的C版本 414

16.3.1方式一:同步共享变量的访问 414

16.3.2方式二:复制全局变量 417

16.4并行化C+++版本的基准 420

16.4.1方式三:将应用程序封装到一个C++++类中 420

16.4.2方式四:使用Cilk Plus Holder 424

16.5结果总览 428

16.5.1性能 428

16.5.2修改工作 428

16.6小结 429

相关图书
作者其它书籍
返回顶部