22、程序多线程化时应生成多少线程?

程序多线程化时应生成多少线程?

1. 问题引入

在程序多线程化过程中,软件流水线调度并不一定能带来最佳的多线程性能。为解决这一问题,提出了一种基于 OPT 内核的 T - OPT 技术,该技术通过高级的以线程级并行(TLP)为中心的代码移动,消除内核中的线程同步需求,并帮助确定使用的线程数量。

2. 示例数据依赖图

以一个数据依赖图(DDG)为例进行说明,图中虚线箭头表示循环携带依赖,实线箭头表示迭代内数据依赖,依赖距离用尖括号表示。此 DDG 中存在一些简单循环,如 v2 → v5 → v8 → v2 v4 → v7 → v4 v2 → v5 → v3 → v4 → v8 → v2

3. 不同调度方法分析
3.1 贪心调度(Greedy Schedule)

贪心调度采用 ASAP(尽快)调度策略,将 DDG 对应的循环每次迭代映射到不同线程。同一水平层的操作在功能单元可用时可并行执行,迭代间的数据依赖通过同步原语(如 post wait )来保证。但线程同步限制了 TLP 的利用,随着调度进行,会出现流水线气泡,且气泡会逐渐变长,导致线程空闲增加,影响多线程性能。迭代间的数据依赖关系如下:
- v15 → v10
- v17 → v5
- v8 → v2
- v5 → v3
-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值