注册 登录 进入教材巡展 进入在线书城
#
  • #
  • #

出版时间:2022-07

出版社:高等教育出版社

以下为《高性能科学计算与编程》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 高等教育出版社
  • 9787040580440
  • 1版
  • 432285
  • 45245174-3
  • 精装
  • 特殊
  • 2022-07
  • 350
  • 332
  • 物理类
  • 本科
内容简介

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

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

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

目录

 前辅文
 第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 的使用
   5.6.2 std::shared_ptr 的使用
   5.6.3 std::weak_ptr 的使用
   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 的使用
  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 各章的源代码及部分图表