热搜关键词: 手机硬件物联网芯片封装C语言

pdf

高性能科学与工程计算

  • 1星
  • 2022-09-19
  • 64.26MB
  • 需要1积分
  • 1次下载
  • favicon收藏
  • rep举报
  • free评论
标签: 高性能

高性能

本书从工程实践的角度介绍了高性能计算的相关知识。主要内容包括现代处理器的体系结构、为读者理解当前体系结构和代码中的性能潜力和局限提供了坚实的理论基础。接下来讨论了高性能计算中的关键问题,包括串行优化、并行、OpenMP、MPI、混合程序设计技术。作者根据自身的研究也提出了一些前沿问题的解决方案,如编写有效的C++代码、GPU编程等

出版者的话

译者序

前言

缩略词

第1章 当代处理器    1

1.1 存储程序的计算机体系结构    1

1.2 基于高速缓存的通用微处理器体系结构    2

1.2.1 性能指标和基准测试    2

1.2.2 晶体管:摩尔定律    5

1.2.3 流水线    6

1.2.4 超标量    10

1.2.5 SIMD    10

1.3 存储层次    11

1.3.1 高速缓存    11

1.3.2 高速缓存映射    13

1.3.3 预取    15

1.4 多核处理器    17

1.5 多线程处理器    19

1.6 向量处理器    20

1.6.1 设计原理    21

1.6.2 最高性能估计    22

1.6.3 程序设计    23

习题    25

第2章 串行代码基本优化技术    26

2.1 标量剖析    26

2.1.1 基于函数和代码行的程序剖析    26

2.1.2 硬件性能计数器    29

2.1.3 手工代码插入    32

2.2 优化常识    32

2.2.1 少做工作    32

2.2.2 避免耗时运算    32

2.2.3 缩减工作集    33

2.3 小方法,大改进    33

2.3.1 消除常用子表达式    33

2.3.2 避免分支    34

2.3.3 使用SIMD指令集    34

2.4 编译器作用    36

2.4.1 通用优化选项    37

2.4.2 内联    37

2.4.3 别名    37

2.4.4 计算准确性    38

2.4.5 寄存器优化    39

2.4.6 利用编译日志    39

2.5 C++优化    40

2.5.1 临时变量    40

2.5.2 动态内存管理    42

2.5.3 循环与迭代器    43

习题    43

第3章 数据访存优化    45

3.1 平衡分析与lightspeed评估    45

3.1.1 基于带宽的性能建模    45

3.1.2 STREAM  基准测试    47

3.2 存储顺序    49

3.3 案例分析:Jacobi算法    50

3.4 案例分析:稠密矩阵转置    53

3.5 算法分类和访存优化    56

3.5.1 O(N)/O(N)    56

3.5.2 O(N2)/O(N2)    57

3.5.3 O(N3)/O(N2)    60

3.6 案例分析:稀疏矩阵向量乘    61

3.6.1 稀疏矩阵的存储机制    62

3.6.2 JDS  sMVM优化    64

习题    66

第4章 并行计算机    68

4.1 并行计算模式分类    69

4.2 共享存储计算机    69

4.2.1 cache一致性    69

4.2.2 UMA    71

4.2.3 ccNUMA    71

4.3 分布式存储计算机    73

4.4 混合型系统    74

4.5 网络    75

4.5.1 网络的基本性能特征    75

4.5.2 总线    78

4.5.3 交换网络和胖树网络    79

4.5.4 Mesh  网络    81

4.5.5 混合网络    82

习题    82

第5章 并行性基础    83

5.1 为什么并行化    83

5.2 并行性    83

5.2.1 数据并行性    84

5.2.2 功能并行性    86

5.3 并行扩展性    87

5.3.1 限制并行执行的因素    87

5.3.2 可扩展性指标    88

5.3.3 简单可扩展性定律    89

5.3.4 并行效率    90

5.3.5 串行性能与强可扩展性    91

5.3.6 改进的性能模型    92

5.3.7 选择正确的扩展性基准    94

5.3.8 案例分析:低速处理器计算机能否变得更快    95

5.3.9 负载不均衡    98

习题    101

第6章 使用OpenMP进行共享存储并行编程    103

6.1 OpenMP简介    103

6.1.1 并行执行    103

6.1.2 数据作用域    105

6.1.3 循环的OpenMP工作共享    106

6.1.4 同步    107

6.1.5 归约    108

6.1.6 循环调度    109

6.1.7 任务    110

6.1.8 其他方面    111

6.2 案例分析:OpenMP并行实现Jacobi算法    112

6.3 高级OpenMP:波前并行化    114

习题    116

第7章 高效OpenMP编程    119

7.1 OpenMP程序性能分析    119

7.2 性能缺陷    120

7.2.1 减轻Open  MP共享区开销    121

7.2.2 决定短循环的OpenMP开销    126

7.2.3 串行化    128

7.2.4 伪共享    129

7.3 案例分析:并行稀疏矩阵向量乘    130

习题    133

第8章 ccNUMA体系结构的局部性优化    134

8.1 ccNUMA的局部访问    134

8.1.1 首次访问方式分配页面    135

8.1.2 通过其他方式的局部性访问    137

8.2 案例分析:稀疏MVM的ccNUMA优化    138

8.3 页面布局缺陷    139

8.3.1 非NUMA友好的OpenMP调度    139

8.3.2 文件系统高速缓存    140

8.4 C++中的ccNUMA问题    142

8.4.1 对象数组    142

8.4.2 标准模板库    144

习题    146

第9章 使用MPI进行分布式存储并行内存编程    147

9.1 消息传递    147

9.2 MPI简介    148

9.2.1 一个简单例子    148

9.2.2 消息和点对点通信    150

9.2.3 集合通信    154

9.2.4 非阻塞点对点通信    157

9.2.5 虚拟拓扑    160

9.3 实例:Jacobi解法器的MPI并行    162

9.3.1 MPI实现    162

9.3.2 性能特征    167

习题    170

第10章 高效MPI编程    171

10.1 MPI性能工具    171

10.2 通信参数    174

10.3 同步、串行化和竞争    174

10.3.1 隐式串行化和同步    174

10.3.2 竞争    176

10.4 降低通信开销    177

10.4.1 最优化区域分解    177

10.4.2 聚合消息    180

10.4.3 非阻塞与异步通信    181

10.4.4 集合通信    183

10.5 理解节点内点对点通信    184

习题    189

第11章 MPI与OpenMP混合编程    190

11.1 基本MPI/OpenMP混合编程模型    190

11.1.1 向量模式实现    191

11.1.2 任务模式实现    191

11.1.3 案例分析:混合Jacobi解法器    192

11.2?MPI线程交互分类    193

11.3 混合分解及映射    195

11.3.1 每个节点一个MPI进程    195

11.3.2 每个插槽一个MPI进程    196

11.3.3 每个插槽多个MPI进程    196

11.4 混合编程的优势和劣势    197

11.4.1 改善的收敛速度    197

11.4.2 共享高速缓存中的数据重用    197

11.4.3 利用额外级别的并行性    198

11.4.4 重叠MPI通信和计算    198

11.4.5 减少MPI开销    198

11.4.6 多级别开销    198

11.4.7 向量模式下批量同步通信    198

附录A 多核环境中的拓扑和亲缘性    199

A.1?拓扑    200

A.2?线程和进程分布    201

A.2.1?外部亲缘性工具    201

A.2.2?程序控制亲缘性    203

A.3?非页面首次访问分配策略    204

附录B 习题解答    206

参考文献    221

推荐帖子 最新更新时间:2022-10-03 06:03

串口发送浮点型数据程序解答
下面是我的发送浮点型数据的程序#include "headers.h" void uartInit(void) {         SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);                                 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);       
大北极熊 微控制器 MCU
FPGA和专用DSP的原理及应用
FIR滤波器(图1)存储n数据单元系列,每个数据单元延迟一个附加周期。通常,这些数据单元称之为分支。每个分支与系数相乘,其结果求和产生输出。某些方法并行执行所有的乘法。更一般的方法是分为N级,用累加器从一级到下一级传递结果。这些实现方法用功能资源换取速度,取N个计算级并需要n/N个乘法器。根据系数是静态还是动态以及系数值设计,有不少其他通用的设计最佳化方法。      图1 典型F
Aguilera DSP 与 ARM 处理器
晒 Intel Edison 开发板
上周,从Intel办事处借到一套Edison开发板,预备同时试试Edison和Galileo。看到Edison的第一印象就是Edison比Galileo强多了,已经象一个工具,而不是简单一个模仿其它厂家的开发板了,做工也精致多了。 想问问已经开始玩Edison的网友,除了Arduino IDE,还可以用哪些开发工具,感觉Arduino发挥不出这个开发板的特点。 还是老习惯,先晒一下板,然后再去
dcexpert DIY/开源硬件专区
Sensortag传感器频率设置问题
刚在TI的官方例程中,找到了关于sensortag传感器采样频率的设置,如下: #define SENSOR_MIN_UPDATE_PERIOD        100     // Minimum 100 milliseconds#define SENSOR_PERIOD_RESOLUTION        10 但是它是怎么把参数传给底层硬件的?这里SENSOR_MIN_UPDATE_
北风吹 TI技术论坛
微软也搞 FPGA,梗埋六年打造 AI 超级电脑
原文地址 【Technews科技新报】人工智能(AI)发展潜力无限,Google、IBM、亚马逊、Facebook、微软等网络或软件科技巨头无不砸重金投入,软件发展外,硬件性能的运算能力与系统间的整合同样成了这些网络巨头着力点,不只 Google 自行打造了机器学习芯片 TPU,跨足半导体,微软押宝 FPGA 提升人工智能能力的梗也铺了六年之久。   微软一年一度的 Ignite 技术大会近
白丁 FPGA/CPLD
纳米奇(namiki)直流减速电机
请问谁有这个电机的资料啊:日本纳米奇(namiki)直流减速电机,属于空心杯带编码器的;电机的型号:22CL-3501PG;主要是它的编码器怎么用完全查不到资料,谁有的话请发一份给我做毕设用万分感谢,邮箱:zhuqunchaozhu@sina.com。 还有一个问题想问一下,为什么22CL-3501PG这个在namiki官网上找不到,同样的Faulhaber2342L012在faulhabar官
落日归侠 stm32/stm8

评论

登录/注册

意见反馈

求资源

回顶部
查找数据手册?

EEWorld Datasheet 技术支持

热门活动

相关视频

可能感兴趣器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
×