顶部
收藏

高性能科学计算与编程


作者:
潘小敏、姚裕贵
定价:
46.20元
ISBN:
978-7-04-058044-0
版面字数:
350.000千字
开本:
特殊
全书页数:
暂无
装帧形式:
精装
重点项目:
暂无
出版时间:
2022-07-21
读者对象:
高等教育
一级分类:
物理学与天文学类
二级分类:
物理学/应用物理学/天文学专业课程
三级分类:
计算物理

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

本书包括六大部分,分别是:基本概念和线性方程组的基本求解技术、常用的数值算法、高性能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<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 各章的源代码及部分图表

相关图书