并行计算:原理、问题分类与 N 体问题求解
1. 阿姆达尔定律
在并行计算中,强缩放和弱缩放都受到阿姆达尔定律的约束。该定律指出,算法中存在一部分(设为 α)无法并行化。对于 P 个处理器,最大可能的加速比或规模提升由以下公式给出:
[
\text{max } s_P = \frac{1}{\alpha + \frac{1 - \alpha}{P}}
]
当处理器数量趋于无穷大时,最大可能的加速比为:
[
\text{max } s = \lim_{P \to \infty} \frac{1}{\alpha + \frac{1 - \alpha}{P}} = \frac{1}{\alpha}
]
例如,如果程序中有 10%(α = 0.1)无法并行化,那么所能达到的最佳加速比为 10 倍。在实际应用中,对于复杂算法,确定 α 的值有时较为困难。通常,α 远小于 0.1,因此可实现的加速比更大。阿姆达尔定律的重要性在于它指出了并行计算加速的极限。
2. 问题分类
2.1 易并行问题
某些算法天生适合并行计算,这类算法具有高度的独立性,被称为易并行问题。例如,对一个大数组求和,数组的任何部分都可以独立求和,然后将部分和相加,得到的结果与串行求和相同。其他易并行问题的例子包括蒙特卡罗模拟、曼德勃罗集渲染以及某些优化技术,如随机算法和遗传算法。对于易并行问题,使用的处理器越多,运行速度就越快。
2.2 非易并行问题
许多问题并不属于易并行问题,这通常是因为算法中存在不可避免的瓶颈。例如,矩阵求逆是一个难以并行化的经典操作,因为逆矩阵的每个
超级会员免费看
订阅专栏 解锁全文
4323

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



