思维导图备注

并发的艺术
首页 收藏书籍 阅读记录
  • 书签 我的书签
  • 添加书签 添加书签 移除书签 移除书签

第6章 并行求和与前缀求和

浏览 1 扫码
  • 小字体
  • 中字体
  • 大字体
2022-01-24 12:45:58
请 登录 再阅读
上一篇:
下一篇:
  • 书签
  • 添加书签 移除书签
  • O'Reilly Media,Inc.介绍
  • 译者序
  • 前言
    • 本书的目标读者
    • 本书的内容
    • 排版约定
    • 联系方法
    • 致谢
  • 第1章 并行让程序运行得更快
    • 并行和并发:二者的差异是什么
    • 采用线程化方法的4个步骤
      • 第2步 设计与实现:采用线程来实现算法
      • 第3步 测试正确性:检测并修复在线程化时引入的错误
      • 第4步 性能调优:消除性能瓶颈
      • 从一开始就采用并发是否可行
    • 为什么要了解并发?并发能带来什么
    • 并行算法的背景知识
      • 分布式内存编程
      • 并行算法简介
    • 并发编程难不难
    • 共享内存编程与分布式内存编程的比较
      • 分解工作
      • 共享内存模型的特有功能
        • 内存效应
        • 内存中的通信
        • 互斥
        • 生产者/消费者
        • 读/写锁
      • 共享数据
      • 工作的静态/动态分配
    • 线程危不危险
    • 本书采用的并发编程方法
  • 第2章 是否采用并发
    • 任务之间存在哪些依赖性以及如何满足这些依赖性
    • 数据分解
      • 如何确保处理每个数据块的任务在执行更新操作时能够访问到所需要的数据
      • 如何将数据块(和任务)分配到各个线程
      • 示例:有限格网上的生命游戏
    • 哪些算法不能并行
      • 递推
      • 归纳变量
      • 归约
      • 循环体间依赖性
    • 如何将任务分配到线程
    • 并发设计模型起步
    • 示例:数值积分
  • 第3章 算法正确性证明与性能衡量
    • 示例:临界区问题
      • 第二次尝试
      • 第三次尝试
      • 第4次尝试
      • Dekker的算法
        • 第2a种情况:T0是优先线程
        • 第2b种情况:T1是优先线程
        • 第3种情况
        • 是否存在无限延迟的情况
      • 你学到了哪些知识
      • 没有不好的线程,只有编写得不好的线程
    • 性能测试(程序的执行情况如何)
      • Gustafson-Barsis定律
      • 效率
      • 关于加速比和效率的最后一点提示
    • 硬件并行性的发展历史
  • 第4章 多线程程序设计中的8条简单规则
    • 规则2:在尽可能高的层次上实现并发
    • 规则3:尽早考虑通过增加处理器核的数量来获得可伸缩性
    • 规则4:尽可能使用线程安全的库
    • 规则5:使用正确的多线程模型
    • 规则6:永远不要假设程序会按照某种特定的顺序执行
    • 规则7:尽可能使用线程局部存储或者与特定数据相关的锁
    • 规则8:要敢于对代码进行修改以获得更好的并发性
    • 小结
  • 第5章 线程化库
    • Intel Threading Building Blocks
    • 显式线程化
      • Windows Threads
    • 其他主题
    • 特定领域的库
  • 第6章 并行求和与前缀求和
    • 一种更实用的算法
    • 前缀求和
      • 一种更实用的算法
        • 被创建的计算线程完成了哪些工作
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
    • 设计要素权衡
      • 简单性
      • 可移植性
      • 可伸缩性
    • 选择
      • 并发算法
        • 统计和标记各个区间的元素
        • ArrayPack()函数
      • 一些设计注意事项
    • 最后的思考
  • 第7章 映射归约
    • 并发归约运算
      • 栅栏对象的实现
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
    • 映射归约的应用
    • 映射归约作为一般性并发
  • 第8章 排序
    • 设计要素权衡
      • 简单性
      • 可移植性
      • 可伸缩性
    • 奇偶换位排序
      • 尝试提高并发程度
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
    • 希尔排序
      • 串行希尔排序
      • 并发希尔排序
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
    • 快速排序
      • 迭代版本中的并发计算
        • 并发的迭代版本
      • 最终的线程化版本
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
    • 基数排序
      • 直接基数排序
        • 保持数据移动的稳定性
        • 减少数据的访问量
      • 并发的直接基数排序
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
  • 第9章 搜索
    • 设计要素权衡
      • 简单性
      • 可移植性
      • 可伸缩性
    • 二分搜索
      • 并发解决方案
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
  • 第10章 图算法
    • 一种迭代式的解决方案
    • 最短路径问题
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
      • Floyd算法的其他实现方式
    • 目前还没有实现并发解决方案
      • 对条件表达式求值进行锁定
    • 最小生成树
      • Prim算法
      • 我们从哪个串行算法开始
      • 并发的Prim算法
      • 设计要素权衡
        • 简单性
        • 可移植性
        • 可伸缩性
    • 现在来实现并发解决方案
      • 创建深度优先搜索的线程
    • 设计要素权衡
      • 简单性
      • 可移植性
      • 可伸缩性
    • 宽度优先搜索
    • 静态图与动态图
  • 第11章 线程化工具
    • 线程问题调试器:线程检查器
    • 性能工具
      • 线程性能分析:标准的性能分析工具(随着时间推移而采样),线程分析器
    • 其他主题
    • 再接再厉
  • 术语表
  • 照片说明
暂无相关搜索结果!
    展开/收起文章目录

    二维码

    手机扫一扫,轻松掌上学

    《并发的艺术》电子书下载

    请下载您需要的格式的电子书,随时随地,享受学习的乐趣!
    EPUB 电子书

    书签列表

      阅读记录

      阅读进度: 0.00% ( 0/0 ) 重置阅读进度