如何在具有多个处理器的计算机上并行算法?

Laz*_*zer 5 c sorting algorithm parallel-processing mergesort

  • 例如,英特尔Core2Duo应该有一个裸片,但有两个核心.

  • 因此,应该可以控制在哪个核心上处理的内容,这意味着可以指示我的算法并行使用两个核心.

问题是如何?

我是否需要在内核级别执行此操作,或者是否有更简单的方法?更具体地说,实现双核合并排序需要什么?

Dav*_*sky 3

从您过去的问题来看,我想说您正在寻求用 C/C++ 实现,但我相信无论使用哪种语言,答案都大致相同。

如果要并行化任何操作,请将其设为多线程。您可以拥有与核心数量一样多的并行并发线程。

这是一个相关的问题: How to Implement divergence Algorithms in C# using multithreading?

据我了解,将特定线程绑定到核心或处理器称为处理器亲和力。这通常不是一个好主意,因为操作系统的目的是在处理器之间处理线程。在这方面你不可能比操作系统做得更好。