算法复杂度分类解读
1. 并行计算中的问题
在并行计算里,存在几个关键问题影响着算法的效率。
- 通信开销 :计算信息的处理器与需要这些信息进行自身计算的处理器之间,存在信息交换的开销。
- 负载不均衡 :每个处理器应完成大致相同的工作量,但实际很难实现。多数编程范式采用主 - 从模式,主进程协调多个从进程的工作。然而,主进程往往比从进程承担更多工作。由于整个问题需等最后一个进程完成才能解决,所以负载最重、耗时最长的进程决定了整体执行时间。
- 同步问题 :某些计算依赖于其他计算的结果,因此后者必须在前者开始前完成。同步机制能确保这些依赖关系得到满足,但会让部分处理器等待结果,降低并行系统的效率。
理想情况下,使用 p 个处理器相比一个处理器能实现 p 倍的加速,但实际几乎无法达到。在很多情况下,较低的加速比也被认为是不错的,如 MIMD 系统中,较小的 p(如 p = 32)可能达到 50% 的加速比,而 p 达到数千时,加速比可能降至 20% 或更低。此外,好的并行算法不一定是通过并行化好的顺序算法得到的,有时并行化一个较差的顺序算法反而能得到更好的并行算法。
2. I/O 复杂度
I/O 复杂度是算法的一种非标准复杂度度量,但对我们有重要意义。它指的是数据从一种类型的内存转移到另一种类型内存的量,主要关注磁盘与主内存之间的转移,也涉及主内存与缓存内存的转移。在缓存内存的情况下,转移通常不受程序员控制;使用虚拟内存管理(VMM)时,磁盘的情况类似。数据以块(行或页)为单位进行转移,这些块能容纳大量数据,通常有数
超级会员免费看
订阅专栏 解锁全文
19

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



