Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 哪种数量的进程将为我提供最佳性能?_Multithreading_Cluster Computing - Fatal编程技术网

Multithreading 哪种数量的进程将为我提供最佳性能?

Multithreading 哪种数量的进程将为我提供最佳性能?,multithreading,cluster-computing,Multithreading,Cluster Computing,我现在正在做一些昂贵的计算。这是一个程序,我同时运行多个实例。我在linux下的机器上运行它们,每台机器有4个CPU,每个CPU有6个内核。CPU是Intel Xeon X5660,支持超动画。(这是一些疯狂的硬件,嗯?)现在我一次运行24个进程。是否最好运行更多,HT的b/c 不要思考,不要测量 更新 一根绳子有多长 如果没有更多关于你计算的信息,给你一个明确的答案将是困难的,如果不是不可能的话。即使有了这些信息,任何答案都有可能只是猜测 您确实需要对解决方案进行一些计时/分析。但是,在第一个

我现在正在做一些昂贵的计算。这是一个程序,我同时运行多个实例。我在linux下的机器上运行它们,每台机器有4个CPU,每个CPU有6个内核。CPU是Intel Xeon X5660,支持超动画。(这是一些疯狂的硬件,嗯?)现在我一次运行24个进程。是否最好运行更多,HT的b/c

不要思考,不要测量

更新

一根绳子有多长


如果没有更多关于你计算的信息,给你一个明确的答案将是困难的,如果不是不可能的话。即使有了这些信息,任何答案都有可能只是猜测

您确实需要对解决方案进行一些计时/分析。但是,在第一个实例中,您需要能够配置在任何时间运行的线程/进程的数量

一旦你有了这个,你就可以设置一个场景,运行它并测量结果


重复不同的值,看哪一个执行得最好。

第一个测量是个好主意,但是你也可以考虑如下:

  • 如果进程可能会阻塞(特别是IO),那么越多越好
  • 如果这些进程大部分时间都在做大量的数学运算,那么您可以利用更多进程的超线程优势
  • 另一方面,如果进程具有任何共享状态(内存或文件),过多的共享状态将增加争用和缓存抖动

我正要输入维克多写的内容,所以我让他+1

我想补充一点,当存在上下文切换时,进程比线程带来更多的开销


如果您的应用程序体系结构允许,考虑一个具有多个线程的进程,或者每个进程都有M个线程,其中N和M是通过标杆来确定的。当然是对的。这通常只能通过实验才能发现。我同意没有什么比得上一个好的基准,但你也需要思考(有一些背景知识)来设计一个好的基准。@Eric J:但没有一个基准是一个足够精确的实际操作模型,因此它完全是一个经验决定。混合隐喻:一只母鸡有多重?@Victor:在他的例子中,IO可能很轻(时不时地写下结果)。谢谢,我现在没有时间写一个广泛的基准b/c,我需要写一篇论文。所以你给了我一些想法。