第一篇MIC基础篇 3
第1章MIC高性能计算 3
1.1多核、众核计算的发展 3
1.2 MIC技术简介 6
1.3为什么要选择MIC 7
1.3.1 SMP 8
1.3.2集群(cluster) 8
1.3.3 GPGPU 8
第2章MIC硬件及软件架构 11
2.1 MIC硬件架构 12
2.1.1术语解析 12
2.1.2 MIC硬件架构概览 13
2.1.3 MIC Core 15
2.1.4环形互联总线Ring 27
2.1.5 CLOCK 28
2.1.6页表(Page Tables) 28
2.1.7系统接口 29
2.1.8性能监控单元和事件管理器 35
2.1.9电源管理 36
2.2 MIC软件架构 37
2.2.1概述 37
2.2.2 Bootstrap 39
2.2.3 Linux加载器 40
2.2.4微操作系统(μOS) 40
2.2.5对称通信接口(SCIF) 42
2.2.6主机驱动 43
2.2.7 sysfs节点 45
2.2.8 MPI应用的MIC软件栈 46
2.2.9应用编程接口(API) 53
第3章MIC安装、环境配置 54
3.1 MIC环境配置 54
3.1.1前期准备 54
3.1.2安装Host端的Linux操作系统 55
3.1.3安装MIC驱动 55
3.1.4安装在MIC上编译C/C++++的编译器 59
3.2 SDK示例运行 61
第4章 第一个MIC实例——计算PI 63
第5章OpenMP和MPI编程基础 66
5.1 OpenMP基础 66
5.1.1 OpenMP简介 67
5.1.2 OpenMP编程模型 67
5.1.3 OpenMP语法简要介绍 67
5.2 MPI基础 72
5.2.1启动和终止MPI库 73
5.2.2获取信息 73
5.2.3发送和接收消息 74
第6章MIC编程 77
6.1 MIC编程模型 77
6.2应用模式 78
6.2.1 CPU原生模式 79
6.2.2 CPU为主MIC为辅模式 79
6.2.3 CPU与MIC对等模式 80
6.2.4 MIC为主CPU为辅模式 81
6.2.5 MIC原生模式 81
6.3 MIC基本语法 83
6.3.1 offload 83
6.3.2变量和函数声明 100
6.3.3头文件 101
6.3.4环境变量 101
6.3.5编译选项 102
6.3.6其他问题 104
6.4 MIC上的MPI 104
6.4.1 MIC上的MPI限制 104
6.4.2 MIC上MPI编程模型 105
6.4.3 MIC上的MPI环境配置 107
6.4.4编译及使用 109
6.4.5 MIC上的MPI示例 109
6.5 SCIF编程 112
6.5.1什么是SCIF 112
6.5.2 SCIF的基本概念介绍 112
6.5.3 SCIF基本通信过程 114
6.5.4 SCIF用到的API函数 116
第7章MIC软件调试与性能分析工具 120
7.1 Intel软件工具链对MIC的支持 120
7.2 M IC软件调试工具IDB 121
7.2.1 IDB简介 121
7.2.2 IDB的操作界面 121
7.2.3 IDB对MIC架构的支持与要求 122
7.2.4使用IDB调试MIC程序 123
7.3 MIC性能分析工具VTune 146
第8章Intel MIC MKL库使用方法 161
8.1 Intel MKL核心函数库介绍 161
8.2在MIC卡上使用Intel MKL 162
8.2.1编译器辅助offload方式 163
8.2.2自动offload方式 164
8.3 FFT在MIC上的使用 168
8.3.1 FFT简介 168
8.3.2 FFT在MIC上的使用方法一 169
8.3.3 FFT在MIC上的使用方法二 172
8.4 BLAS在MIC上的使用 179
8.4.1 BLAS简介 179
8.4.2在MIC 上调用BLAS库方法 179
第二篇 性能优化篇 185
第9章MIC性能优化 185
9.1 MIC性能优化策略 185
9.2 MIC优化方法 187
9.2.1并行度优化 187
9.2.2内存管理优化 190
9.2.3数据传输优化 192
9.2.4存储器访问优化 206
9.2.5向量化优化 210
9.2.6负载均衡优化 219
9.2.7 MIC线程扩展性优化 222
第10章MIC优化示例:矩阵乘法 224
10.1矩阵乘法串行算法 224
10.2 OpenMP多线程矩阵乘法 226
10.3 MIC多线程矩阵乘法 226
10.3.1基本版本 226
10.3.2向量化优化 227
10.3.3 SIMD指令优化 228
10.3.4矩阵分块乘法 230
第三篇 工程开发篇 251
第11章 基于MIC的HPC应用开发过程 251
11.1热点测试 252
11.1.1准备工作 252
11.1.2热点测试及定位 253
11.2程序分析 256
11.2.1程序移植模式分析 256
11.2.2计算规模分析 256
11.2.3特点分析 257
11.2.4热点并行性分析 260
11.2.5向量化分析 262
11.2.6 MIC内存分析 262
11.2.7程序分析总结 263
11.3 MIC程序开发过程 263
11.3.1基于CPU的OpenMP并行 264
11.3.2基于MIC的线程扩展 265
11.3.3单节点CPU+MIC协同并行 265
11.3.4 MIC集群并行 266
第12章 基于MIC的HPC应用实例 267
12.1基于单节点 CPU+MIC协同计算电子断层三维重构并行算法 268
12.1.1电子断层三维重构技术及SIRT算法介绍 268
12.1.2 SIRT串行程序分析 271
12.1.3基于OpenMP的SIRT并行程序开发 273
12.1.4基于MIC平台的SIRT并行程序开发 276
12.1.5单节点多卡及CPU+MIC异构协同计算架构设计 279
12.2基于多节点CPU+MIC协同计算大涡模拟并行算法 284
12.2.1格子-Boltzmann大涡模拟算法介绍 284
12.2.2大涡模拟串行程序分析 288
12.2.3基于OpenMP的大涡模拟并行算法 290
12.2.4基于MIC的大涡模拟并行算法 293
12.2.5基于多节点CPU+MIC协同计算平台的大涡模拟并行算法 296
参考文献 308