并行算法设计

本文探讨了如何将串行算法转化为并行版本,强调并行算法与体系结构的紧密关系。通过n个数求和的例子,展示了任务分解、数据依赖、竞争条件及其解决方法,包括使用加锁、障碍等同步机制。此外,还讨论了数据并行和不同的任务划分策略,以提高并行计算的效率。
摘要由CSDN通过智能技术生成

并行算法设计

并行算法设计

假定已有求解问题的串行算法,我们将 其改为并行版本

  • 并不一定是最好的策略——有些情况下,最 优并行算法与最优串行算法完全没有关系
  • 但很有用,我们很熟悉串行算法,很多时候 是切实可行的方法

并行算法与体系结构紧密相关!

任务分解、数据依赖、竞争条件

设计一个并行算法
  1. 计算任务的分解
    ❑ 如何将并行计算工作分解,交由众多进程/线程并发执行
  2. 保持依赖关系
    ❑ 计算结果与串行算法保持一致
  3. 额外开销
    ❑ 有多种类型的开销,要尽量降低
竞争条件与数据依赖
  1. 执行结果依赖于两个或更多事件的时序, 则存在竞争条件(race condition)
  2. 数据依赖(data dependence)就是两个内 存操作的序,为了保证结果的正确性,
    必须保持这个序
  3. 同步(synchronization)用来将多个线程 的执行串行化,或是将并发数据访问串
    行化
n 个数求和的例子
1.串行算法
sum = 0;
for (i = 0; i < n; i++) {
x = Compute next value(. . .);
sum += x; }
2. 并行算法
版本1:计算任务划分

假定每个核心计算连续n/t个元素的部分和(t为线程数或处理器数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值