并行程序性能分析与优化策略
1. 并行执行时间分析
在并行程序中,对于具有 $p$ 个处理单元和 $N$ 次迭代的循环,其并行执行时间 $T_p(k)$ 可通过以下近似公式估算:
$T_p(k) = \frac{N}{k \cdot p}(k \cdot B + \sigma) = \frac{N \cdot B}{p} + \frac{N \cdot \sigma}{k \cdot p}$
其中,$N/k$ 个数据块由 $p$ 个处理器并行执行,每个数据块的执行时间为 $k \cdot B + \sigma$,$B$ 表示一次迭代的执行时间,$\sigma$ 表示一个数据块的调度开销。
对 $T_p(k)$ 求一阶导数:
$T’_p(k) = -\frac{N\sigma}{k^2 \cdot p}$
该导数无零点,因此在这种简单情况下,无法计算出 $k$ 的最优值。
对近似公式进行微小修改:
$\tilde{T}_p(k) = (\frac{N}{k \cdot p} + 1)(k \cdot B + \sigma) = \frac{N \cdot B}{p} + k \cdot B + \frac{N \cdot \sigma}{k \cdot p} + \sigma$
其一阶导数为:
$T’_p(k) = B - \frac{N \cdot \sigma}{k^2 \cdot p}$
当 $k = \sqrt{\frac{N \cdot \sigma}{p \cdot B}}$ 时,导数为零,此为全局最小值。但由于 $B$ 的值未知,即使得到该 $k$ 值,也可能无法找到实际循环执行的最小值,
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



