图书信息
图书目录

高性能科学计算与编程




本书致力于培养高性能、大规模仿真与计算领域的优秀人才。这一领域是数学、计算机高性能编程和物理学的深度融合,是典型的交叉学科。在横向上,本书融合高性能工程仿真与科学计算中物理学、数学和计算机编程等多学科的教学内容;纵向上,贯通初级数值分析、典型物理或其他应用场景,以及现代高性能仿真计算技术。作者在消化物理学、数学和计算机科学的相关理论与技术的基础上,对这些理论与技术进行精心挑选,在适应当前教学需要的前提下,将核心理论、算法和技术完整地呈现给读者。

本书包括六大部分,分别是:基本概念和线性方程组的基本求解技术、常用的数值算法、高性能C++ 编程的基本技术、基于多核和GPU 的高性能算法编程技术、人工智能的基本概念和相关算法的编程加速及附录。

本书可作为高等院校理工类专业高年级本科学生的教材, 也可供感兴趣的读者参考阅读。



作者:
潘小敏、姚裕贵

定价:
46.20 元

出版时间:
2022-07-21

ISBN:
978-7-04-058044-0

物料号:
58044-00

读者对象:
高等教育

一级分类:
物理学与天文学类

二级分类:
物理学/应用物理学/天文学专业课程

三级分类:
计算物理

重点项目:
暂无

版面字数:
350千字

开本:
特殊

装帧形式:
精装

页数:
暂无

最新
印次时间:
2022年01月
  • 目录
    • 前辅文
      • 第1章 引言
        • 1.1 仿真的基本过程和要素
          • 1.1.1 仿真对象的数学建模
            • 1.1.2 数学模型的离散
              • 1.1.3 离散模型的计算机实现
              • 1.2 仿真性能的指标
                • 1.2.1 校模和验模
                  • 1.2.2 精度与误差
                    • 1.2.3 仿真效率
                      • 1.2.4 用渐进形式表示时间和空间开销
                        • 1.2.5 加速比、并行效率及其他并行的相关概念
                          • 1.2.6 阿姆达尔定律
                          • 课程设计
                          • 第2章 线性方程组的基本求解技术
                            • 2.1 矩阵的存储
                              • 2.1.1 行优先与列优先
                                • 2.1.2 用 C++ 数组存储矩阵
                                  • 2.1.3 稠密阵的存储
                                    • 2.1.4 稀疏阵的压缩存储
                                    • 2.2 矩阵操作的 C++ 实现
                                      • 2.2.1 文件 abstract_mat.h
                                        • 2.2.2 文件 innerproduct_vec.h
                                          • 2.2.3 文件 dense_mat_vec.h
                                            • 2.2.4 文件 init_matrix.h
                                              • 2.2.5 文件 csr_spmtx_vec.h
                                                • 2.2.6 文件 abs_t.h
                                                  • 2.2.7 文件 drv_spmtx_zplx.cc
                                                  • 2.3 线性方程组的直接解法
                                                    • 2.3.1 高斯消元法和 LU 分解法
                                                      • 2.3.2 调用 LAPACK 库函数实现线性方程组 LU 求解的示例
                                                      • 2.4 迭代法
                                                        • 2.4.1 迭代终止条件与预处理
                                                          • 2.4.2 共轭梯度迭代算法
                                                            • 2.4.3 GMRES 迭代算法
                                                              • 2.4.4 迭代算法的实现
                                                              • 课程设计
                                                              • 第3章 排序、插值与参数估计
                                                                • 3.1 排序
                                                                  • 3.2 插值的基本概念
                                                                    • 3.2.1 插值
                                                                      • 3.2.2 查找特定元素
                                                                      • 3.3 全局多项式插值
                                                                        • 3.3.1 拉格朗日多项式插值
                                                                          • 3.3.2 牛顿多项式插值
                                                                          • 3.4 有理函数插值
                                                                            • 3.5 分段多项式插值
                                                                              • 3.5.1 分段常数插值
                                                                                • 3.5.2 分段线性插值
                                                                                  • 3.5.3 样条插值
                                                                                  • 3.6 多维插值
                                                                                    • 3.6.1 双线性插值
                                                                                      • 3.6.2 双立方插值
                                                                                      • 3.7 数据建模与参数估计
                                                                                        • 3.7.1 线性模型
                                                                                          • 3.7.2 非线性模型
                                                                                          • 课程设计
                                                                                          • 第4章 函数的数值微分与积分
                                                                                            • 4.1 函数的数值微分
                                                                                              • 4.1.1 一阶微分
                                                                                                • 4.1.2 二阶微分
                                                                                                • 4.2 函数的数值积分
                                                                                                  • 4.2.1 牛顿 . 科特斯求积
                                                                                                    • 4.2.2 高斯求积公式
                                                                                                      • 4.2.3 高斯求积的拓展
                                                                                                        • 4.2.4 自适应积分
                                                                                                          • 4.2.5 异常积分的计算
                                                                                                            • 4.2.6 多维积分
                                                                                                            • 课程设计
                                                                                                            • 第5章 与C++相关的高性能编程技术
                                                                                                              • 5.1 模板
                                                                                                                • 5.1.1 函数模板
                                                                                                                  • 5.1.2 类模板
                                                                                                                    • 5.1.3 模板特例化
                                                                                                                    • 5.2 多态及抽象类
                                                                                                                      • 5.2.1 基于重载实现多态
                                                                                                                        • 5.2.2 使用重写实现多态
                                                                                                                          • 5.2.3 纯虚函数与抽象类
                                                                                                                            • 5.2.4 重载多态与重写多态的区别
                                                                                                                            • 5.3 移动语义与完美转发
                                                                                                                              • 5.4 类中特种成员函数
                                                                                                                                • 5.4.1 初始化列表
                                                                                                                                  • 5.4.2 C++ 特殊成员函数的创建规则
                                                                                                                                  • 5.5 Lambda 表达式
                                                                                                                                    • 5.5.1 捕获子句
                                                                                                                                      • 5.5.2 参数列表
                                                                                                                                        • 5.5.3 可变规范
                                                                                                                                          • 5.5.4 异常规范
                                                                                                                                            • 5.5.5 返回类型
                                                                                                                                              • 5.5.6 函数体
                                                                                                                                              • 5.6 智能指针
                                                                                                                                                • 5.6.1 std::unique_ptr<T> 的使用
                                                                                                                                                  • 5.6.2 std::shared_ptr<T> 的使用
                                                                                                                                                    • 5.6.3 std::weak_ptr<T> 的使用
                                                                                                                                                      • 5.6.4 智能指针的额外开销
                                                                                                                                                      • 5.7 C++ 算法库及库的并行拓展
                                                                                                                                                        • 5.7.1 算法库
                                                                                                                                                          • 5.7.2 并行拓展的基本概念
                                                                                                                                                            • 5.7.3 函数 std::for_each()
                                                                                                                                                              • 5.7.4 函数 std::sort()
                                                                                                                                                              • 5.8 std::vector<T> 的使用
                                                                                                                                                                • 5.9 随机数的生成
                                                                                                                                                                  • 课程设计
                                                                                                                                                                  • 第6章 程序的生成与运行
                                                                                                                                                                    • 6.1 可执行文件的生成
                                                                                                                                                                      • 6.1.1 编译与链接
                                                                                                                                                                        • 6.1.2 ELF 格式的目标文件与可执行文件
                                                                                                                                                                          • 6.1.3 处理目标文件的工具
                                                                                                                                                                          • 6.2 可执行文件的加载启动
                                                                                                                                                                            • 6.3 静态库与共享库
                                                                                                                                                                              • 6.3.1 不使用 C 的数学库生成 xhello 可执行文件
                                                                                                                                                                                • 6.3.2 静态库
                                                                                                                                                                                  • 6.3.3 共享库
                                                                                                                                                                                  • 6.4 软件的自动构建工具
                                                                                                                                                                                    • 6.4.1 GNU make 的基本使用
                                                                                                                                                                                      • 6.4.2 GNU 的自动构建工具包
                                                                                                                                                                                        • 6.4.3 CMake
                                                                                                                                                                                          • 6.4.4 构建工具的比较
                                                                                                                                                                                          • 课程设计
                                                                                                                                                                                          • 第7章 线程级并行及编程
                                                                                                                                                                                            • 7.1 多处理器系统与并行
                                                                                                                                                                                              • 7.1.1 多处理器系统
                                                                                                                                                                                                • 7.1.2 线程级并行的挑战
                                                                                                                                                                                                • 7.2 多线程编程的主要方式与接口
                                                                                                                                                                                                  • 7.3 Pthreads 多线程并行
                                                                                                                                                                                                    • 7.4 OpenMP 多线程并行
                                                                                                                                                                                                      • 7.4.1 OpenMP 概述
                                                                                                                                                                                                        • 7.4.2 OpenMP 并行示例
                                                                                                                                                                                                        • 7.5 std::thread 多线程并行
                                                                                                                                                                                                          • 课程设计
                                                                                                                                                                                                          • 第8章 通用图像处理器及其并行编程
                                                                                                                                                                                                            • 8.1 GPU 的架构与基本编程思想
                                                                                                                                                                                                              • 8.1.1 GPU 的计算单元与 SIMT 线程
                                                                                                                                                                                                                • 8.1.2 GPU 存储的结构与管理
                                                                                                                                                                                                                • 8.2 基于 CUDA 的图像旋转加速示例
                                                                                                                                                                                                                  • 8.2.1 图像旋转任意角度的后向映射算法
                                                                                                                                                                                                                    • 8.2.2 图像保存格式
                                                                                                                                                                                                                      • 8.2.3 用 C++ 实现图像旋转
                                                                                                                                                                                                                        • 8.2.4 示例程序的运行结果
                                                                                                                                                                                                                          • 8.2.5 图像旋转的 CUDA 加速
                                                                                                                                                                                                                          • 8.3 CUDA 编程模型和运行设置
                                                                                                                                                                                                                            • 8.3.1 函数前缀修饰符与核函数
                                                                                                                                                                                                                              • 8.3.2 软件与硬件的映射
                                                                                                                                                                                                                                • 8.3.3 计算能力
                                                                                                                                                                                                                                  • 8.3.4 CUDA 的其他 C 语言拓展
                                                                                                                                                                                                                                  • 8.4 GPU 加速的 CUDA 库
                                                                                                                                                                                                                                    • 8.4.1 NVIDIA 提供的常用库
                                                                                                                                                                                                                                      • 8.4.2 使用 cuBLASLt API 的示例
                                                                                                                                                                                                                                      • 课程设计
                                                                                                                                                                                                                                      • 第9章 全连接人工神经网络
                                                                                                                                                                                                                                        • 9.1 机器学习与人工神经网络
                                                                                                                                                                                                                                          • 9.1.1 感知器
                                                                                                                                                                                                                                            • 9.1.2 典型的全连接网络
                                                                                                                                                                                                                                            • 9.2 损失函数与反向传播
                                                                                                                                                                                                                                              • 9.2.1 损失函数
                                                                                                                                                                                                                                                • 9.2.2 Softmax 层的微分
                                                                                                                                                                                                                                                  • 9.2.3 输出层的微分
                                                                                                                                                                                                                                                    • 9.2.4 隐藏层的微分
                                                                                                                                                                                                                                                      • 9.2.5 偏置的微分
                                                                                                                                                                                                                                                      • 9.3 基于梯度的优化算法
                                                                                                                                                                                                                                                        • 9.4 过拟合及缓解过拟合的方案
                                                                                                                                                                                                                                                          • 9.4.1 欠拟合与过拟合
                                                                                                                                                                                                                                                            • 9.4.2 正则化
                                                                                                                                                                                                                                                              • 9.4.3 缓解过拟合的其他办法
                                                                                                                                                                                                                                                              • 9.5 一个全连接网络示例
                                                                                                                                                                                                                                                                • 9.5.1 MNIST 数据集
                                                                                                                                                                                                                                                                  • 9.5.2 用 C++ 实现全连接网络
                                                                                                                                                                                                                                                                    • 9.5.3 运行结果
                                                                                                                                                                                                                                                                    • 课程设计
                                                                                                                                                                                                                                                                    • 第10章 卷积神经网络
                                                                                                                                                                                                                                                                      • 10.1 卷积神经网络的基本概念与卷积
                                                                                                                                                                                                                                                                        • 10.2 池化
                                                                                                                                                                                                                                                                          • 10.3 卷积神经网络实现的一些考虑
                                                                                                                                                                                                                                                                            • 10.3.1 填白
                                                                                                                                                                                                                                                                              • 10.3.2 步长
                                                                                                                                                                                                                                                                                • 10.3.3 多通道
                                                                                                                                                                                                                                                                                • 10.4 一种手写体数字识别的卷积神经网络
                                                                                                                                                                                                                                                                                  • 10.4.1 网络结构
                                                                                                                                                                                                                                                                                    • 10.4.2 前向计算过程
                                                                                                                                                                                                                                                                                      • 10.4.3 反向传播过程
                                                                                                                                                                                                                                                                                      • 10.5 手写体数字识别卷积神经网络的实现与结果
                                                                                                                                                                                                                                                                                        • 课程设计
                                                                                                                                                                                                                                                                                        • 第11章 人工神经网络的高性能实现
                                                                                                                                                                                                                                                                                          • 11.1 计算瓶颈分析
                                                                                                                                                                                                                                                                                            • 11.2 OpenMP 线程并行加速
                                                                                                                                                                                                                                                                                              • 11.3 GPU 加速
                                                                                                                                                                                                                                                                                                • 11.3.1 数据结构 Blob 的改变
                                                                                                                                                                                                                                                                                                  • 11.3.2 类 Network 的改变
                                                                                                                                                                                                                                                                                                    • 11.3.3 类 Layer 的改变
                                                                                                                                                                                                                                                                                                      • 11.3.4 类 Layer 的派生类
                                                                                                                                                                                                                                                                                                        • 11.3.5 运行结果
                                                                                                                                                                                                                                                                                                        • 课程设计
                                                                                                                                                                                                                                                                                                        • 参考文献
                                                                                                                                                                                                                                                                                                          • 附录
                                                                                                                                                                                                                                                                                                            • 附录 A 文献中常提到的算法
                                                                                                                                                                                                                                                                                                              • 附录 B 数字在计算机中的存储
                                                                                                                                                                                                                                                                                                                • 附录 C 存储器的层次、进程、线程及虚拟内存
                                                                                                                                                                                                                                                                                                                  • 附录 D 常用数值函数库
                                                                                                                                                                                                                                                                                                                    • 附录 E 机器学习中反向传播算法的一些具体推导
                                                                                                                                                                                                                                                                                                                      • 附录 F 各章的源代码及部分图表
                                                                                                                                                                                                                                                                                                                    1