顶部
收藏

并行编程实践


作者:
陈国良 主编
定价:
75.00元
ISBN:
978-7-04-060141-1
版面字数:
700.000千字
开本:
特殊
全书页数:
暂无
装帧形式:
平装
重点项目:
暂无
出版时间:
2023-11-13
读者对象:
高等教育
一级分类:
计算机/教育技术类
二级分类:
计算机科学与技术专业课程

本书介绍并行程序设计方法及相关编程工具与实践,分5篇共14章。第一篇“并行程序设计基础”含两章,包括并行计算机系统与结构模型、并行程序设计简介;第二篇“SIMD指令级并行编程”含两章,包括SIMD基本概念和x86处理器上的并行指令编程方法和示例、ARM结构上的NEON向量指令编程与示例;第三篇“多核并行计算”含4章,包括Pthread多线程编程、OpenMP编程、GPU上的CUDA编程、寒武纪MLU编程基础;第四篇“多机并行计算”含4章,包括MPI并行计算及示例、Hadoop编程方法及示例、Spark编程和示例、TensorFlow多机异构计算的编程方法和示例;第五篇给出了并行算法实现示例。

本书涉及范围广,覆盖了单核、多核和多机环境下的并行编程方法,读者可根据自己的计算问题和计算平台特性,选择合适的并行编程方法和工具,结合各章给出的性能调优思路有效地实现并行编程。本书可作为高等学校计算机及相关专业本科高年级学生和研究生的教材,也可供从事并行程序设计及其实现的科技人员参考阅读。

  • 前辅文
  • 第一篇 并行程序设计基础
    • 第1章 并行计算机系统与结构模型
      • 1.1 典型并行计算机系统简介
        • 1.1.1 阵列处理机
        • 1.1.2 向量处理机
        • 1.1.3 共享存储多处理机
        • 1.1.4 分布存储多计算机
        • 1.1.5 分布共享存储多处理机
      • 1.2 当代并行计算机体系结构
        • 1.2.1 并行计算机体系结构模型
        • 1.2.2 并行计算机存储结构模型
        • 1.2.3 分布式高速缓存与主存体系结构
      • 1.3 小结
      • 习题
    • 第2章 并行程序设计简介
      • 2.1 并行程序开发方法
        • 2.1.1 并行层次与代码粒度
        • 2.1.2 并行程序开发策略
        • 2.1.3 并行编程模式
        • 2.1.4 PCAM设计方法学
      • 2.2 并行程序设计模型
        • 2.2.1 计算π样本程序
        • 2.2.2 数据并行模型
        • 2.2.3 消息传递模型
        • 2.2.4 共享变量模型
      • 2.3 并行编程语言和环境概述
        • 2.3.1 早期并行编程语言
        • 2.3.2 近代并行编程语言与环境
        • 2.3.3 并行说明性语言环境
      • 2.4 循环程序并行化的一般方法
        • 2.4.1 数据相关分析
        • 2.4.2 数据划分与处理器指派
        • 2.4.3 循环重构
      • 2.5 小结
      • 习题
  • 第二篇 SIMD指令级并行编程
    • 第3章 SIMD并行编程
      • 3.1 SIMD指令
        • 3.1.1 工作原理
        • 3.1.2 SIMD程序性能分析
        • 3.1.3 典型的SIMD指令集
      • 3.2 SIMD编程方法
        • 3.2.1 基于SIMD库函数的编程
        • 3.2.2 编译器自动向量化
        • 3.2.3 编译制导、内置函数与汇编方法
      • 3.3 x86内置函数的SIMD编程
        • 3.3.1 编程基础
        • 3.3.2 内置函数
      • 3.4 编程实践
        • 3.4.1 实例一 加法运算
        • 3.4.2 实例二 计算向量点积
        • 3.4.3 实例三 32位图像转置
        • 3.4.4 实例四 24位图像转灰度图
      • 3.5 小结
      • 习题
    • 第4章 ARM平台SIMD编程
      • 4.1 ARM NEON指令集概述
        • 4.1.1 向量数据
        • 4.1.2 向量操作
      • 4.2 常用NEON操作
        • 4.2.1 算术逻辑及数据类型转换
        • 4.2.2 访存及其他操作
      • 4.3 实例 矩阵向量乘法
        • 4.3.1 矩阵乘法的NEON优化
        • 4.3.2 性能测试
        • 4.3.3 matrix_mul_vector.c完整代码
      • 4.4 实例 RGB彩色图像转灰度
        • 4.4.1 灰度转换及其NEON优化
        • 4.4.2 性能测试
        • 4.4.3 rgb_to_gray.c完整代码
      • 4.5 小结
      • 习题
  • 第三篇 多核并行计算
    • 第5章 Pthread多线程编程
      • 5.1 线程与Pthread概述
        • 5.1.1 进程与线程
        • 5.1.2 什么是Pthread
      • 5.2 多线程编程
        • 5.2.1 线程管理
        • 5.2.2 互斥量
        • 5.2.3 条件变量
      • 5.3 实例 矩阵乘法
      • 5.4 小结
      • 习题
    • 第6章 OpenMP编程
      • 6.1 OpenMP基本概念
        • 6.1.1 执行模式
        • 6.1.2 OpenMP编程要素
      • 6.2 OpenMP编程
        • 6.2.1 并行域管理
        • 6.2.2 任务分担
        • 6.2.3 同步
        • 6.2.4 数据环境控制
      • 6.3 OpenMP编程示例(GNU/GCC)
        • 6.3.1 初始串行程序
        • 6.3.2 热点分析
        • 6.3.3 增量并行化
        • 6.3.4 功能调试
      • 6.4 OpenMP编程示例(Intel PSX)
        • 6.4.1 Windows平台
        • 6.4.2 Linux平台
      • 6.5 小结
      • 习题
    • 第7章 GPU上的CUDA编程
      • 7.1 GPU概述
        • 7.1.1 CPU与GPU
        • 7.1.2 CPU+GPU异构计算架构
        • 7.1.3 GPU编程方法
      • 7.2 GPU硬件架构及软件体系
        • 7.2.1 基本结构
        • 7.2.2 GPU存储体系
        • 7.2.3 CUDA在GPU中的硬件映射
        • 7.2.4 CUDA软件体系
      • 7.3 CUDA C编程
        • 7.3.1 CUDA编程模型
        • 7.3.2 CUDA的异构执行
        • 7.3.3 CUDA C语言拓展
        • 7.3.4 CUDA线程组织
      • 7.4 CUDA并行编程实例
        • 7.4.1 向量加法实例
        • 7.4.2 矩阵乘法实例
        • 7.4.3 归约
      • 7.5 小结
      • 习题
    • 第8章 寒武纪MLU编程基础
      • 8.1 寒武纪人工智能开发平台
        • 8.1.1 Neuware软件栈
        • 8.1.2 应用开发模式
        • 8.1.3 开发环境搭建
      • 8.2 MLU智能计算系统
        • 8.2.1 硬件架构层级
        • 8.2.2 计算模型与存储模型
      • 8.3 编程模型
        • 8.3.1 异构编程模型
        • 8.3.2 MLU编程——BANG语言及其数据类型
        • 8.3.3 MLU编程——BANG语言内置函数及地址空间
        • 8.3.4 主机端编程
        • 8.3.5 并行编程模型
        • 8.3.6 性能调优示例
      • 8.4 CNML机器学习库
        • 8.4.1 基本编程要素
        • 8.4.2 CNML编程
      • 8.5 定制的机器学习框架
        • 8.5.1 框架移植
        • 8.5.2 TensorFlow编程
      • 8.6 小结
      • 习题
  • 第四篇 多机并行计算
    • 第9章 MPI编程
      • 9.1 MPI概述
        • 9.1.1 MPI标准及其历史
        • 9.1.2 MPI语言绑定及其实现
      • 9.2 MPI编程要素
        • 9.2.1 最基本的MPI
        • 9.2.2 MPI消息
        • 9.2.3 点对点通信
        • 9.2.4 群集通信
      • 9.3 MPI编程示例
        • 9.3.1 示例1 计算π
        • 9.3.2 示例2 矩阵乘法
      • 9.4 小结
      • 习题
    • 第10章 Hadoop编程
      • 10.1 Hadoop简介
        • 10.1.1 Hadoop生态
        • 10.1.2 工业界中的Hadoop
      • 10.2 Hadoop分布式文件系统(HDFS)
        • 10.2.1 HDFS概述
        • 10.2.2 HDFS基本架构
        • 10.2.3 HDFS的工作流程
      • 10.3 MapReduce分布式编程框架
        • 10.3.1 Hadoop MapReduce基本架构
        • 10.3.2 Hadoop MapReduce作业生命周期
        • 10.3.3 Hadoop MapReduce示例——WordCount
      • 10.4 集群资源管理器YARN
        • 10.4.1 Hadoop YARN概述
        • 10.4.2 Hadoop YARN基本架构
        • 10.4.3 YARN的工作流程
      • 10.5 Hadoop环境搭建
        • 10.5.1 单机模式和伪分布式环境
        • 10.5.2 分布式环境
      • 10.6 Hadoop应用示例——基于最小生成树的分布式聚类算法
        • 10.6.1 问题描述
        • 10.6.2 最小生成树算法
        • 10.6.3 基于最小生成树的分布式聚类算法
      • 10.7 Hadoop性能调优
        • 10.7.1 Hadoop参数配置
        • 10.7.2 MapReduce任务的优化
        • 10.7.3 集群监控工具
      • 10.8 小结
      • 习题
    • 第11章 Spark编程
      • 11.1 Spark简介
        • 11.1.1 Spark与Hadoop比较
        • 11.1.2 Spark并行计算原理
      • 11.2 与Spark交互
        • 11.2.1 Spark Shell
        • 11.2.2 PySpark
        • 11.2.3 示例程序
      • 11.3 Spark开发环境
        • 11.3.1 使用IntelliJ软件编译源码
        • 11.3.2 使用Shell环境编译源码
        • 11.3.3 Spark编程示例
      • 11.4 Spark弹性分布式数据集
        • 11.4.1 RDD概述
        • 11.4.2 RDD技术实现
        • 11.4.3 RDD分区与依赖
        • 11.4.4 RDD操作集合
      • 11.5 Spark编程实践
        • 11.5.1 Spark Streaming
        • 11.5.2 Spark SQL
      • 11.6 小结
      • 习题
    • 第12章 TensorFlow多机异构计算
      • 12.1 TensorFlow简介
        • 12.1.1 深度学习和TensorFlow概述
        • 12.1.2 TensorFlow安装
        • 12.1.3 计算图模型
      • 12.2 TensorFlow中的并行计算原理
        • 12.2.1 分布式结构
        • 12.2.2 并行计算模式
      • 12.3 TensorFlow程序开发入门
        • 12.3.1 TensorFlow程序基础
        • 12.3.2 常用损失函数
        • 12.3.3 并行计算编程
      • 12.4 TensorFlow并行计算实践
        • 12.4.1 多层感知机实现MNIST分类
        • 12.4.2 卷积神经网络实现MNIST手写识别
        • 12.4.3 LSTM时间序列预测
        • 12.4.4 自定义神经网络模型和分布式学习
      • 12.5 小结
      • 习题
  • 第五篇 并行算法实现示例
    • 第13章 数值计算的并行编程实现
      • 13.1 矩阵运算
        • 13.1.1 矩阵Cannon乘法
        • 13.1.2 矩阵LU分解
        • 13.1.3 矩阵求逆
      • 13.2 线性方程组求解
        • 13.2.1 高斯消元法
        • 13.2.2 雅可比迭代法
      • 13.3 矩阵特征值计算
        • 13.3.1 求解矩阵最大特征值的乘幂法及其串行算法
        • 13.3.2 乘幂法并行算法
      • 13.4 快速傅里叶变换
        • 13.4.1 串行FFT迭代算法
        • 13.4.2 并行FFT算法
      • 13.5 小结
    • 第14章 非数值计算的并行编程实现
      • 14.1 排序
        • 14.1.1 快速排序
        • 14.1.2 并行正则采样排序
      • 14.2 串匹配
        • 14.2.1 KMP串匹配及其串行算法
        • 14.2.2 KMP串匹配的并行算法…561
      • 14.3 图论
        • 14.3.1 连通分量
        • 14.3.2 最小生成树
      • 14.4 组合优化
        • 14.4.1 八皇后问题及其串行算法
        • 14.4.2 八皇后问题的并行算法
      • 14.5 计算几何
        • 14.5.1 包含问题及其串行算法
        • 14.5.2 包含问题并行算法
      • 14.6 小结
  • 参考文献

相关图书