我很抱歉提出一个我知之甚少的话题,但这个想法确实困扰着我,我无法在互联网上找到任何答案。
背景: 我正在和我的一位从事计算机科学研究的朋友交谈。我主要从事临时开发,所以我对大多数 CS 概念的理解是在功能层面(我知道如何使用它们而不是它们如何工作)。他说,将在单个线程上运行的“良好并行化”算法转换为在多个线程上运行的算法并不会导致他所期望的处理速度提高。
推理: 我问他运行这个算法的计算机的架构是什么,他说 16 核(非虚拟化)。根据我对多核处理器的了解,在多核上运行的算法的处理速度提升应该与它的并行化程度大致成正比。
问题: “良好并行化”并正确编程以在真正的多核处理器上运行的算法怎么能不快几倍?是否有一些我在这里遗漏的信息,或者更可能是实施的问题?
其他东西:我问线程是否可能比任何单个内核可用的功率都多,显然每个内核都运行在 3.4 GHz。这远远超出了算法应该需要的范围,并且在运行诊断时,内核不会在运行时达到最大值。