是否有一个任务调度程序非常适合在具有超线程的处理器上进行浮点计算?

时间:2013-03-18 18:59:04

标签: c# floating-point task-parallel-library .net-4.5 hyperthreading

我想使用TPL来管理对英特尔IPP或MKL库的调用。当然,这些是浮点计算密集型指令。由于超线程只为每个核心分配一个浮点线程,因此我想要一种智能地安排任务的方法。

2 个答案:

答案 0 :(得分:3)

这不是超线程的工作方式。没有这样的“赋值”,并且没有“每个核心的浮点线程”的概念。核心动态选择一个可用的浮点执行单元。有几个,他们没有相同的能力。拥有许多执行引擎是首先使超线程工作的原因。人为地试图绕过可能是超线程的逻辑核心并不会使它变得更快,它会使它变慢,因为你可能会绕过使用其他空闲引擎的机会。

我知道你其他问题实际上还没有这个工作。所以这很可能是过早优化的情况。首先运行它,看看它是否足够好。如果缺乏,那么选择更好的硬件,例如Xeon类处理器。

答案 1 :(得分:0)

为了使IPP FFT有效且高效,我不得不分离尽可能多的任务,因为每个包的核心次数和包的数量。

启用NUMA节点后,必须通过在app配置文件中启用gcServer来解决另一个可伸缩性问题。这似乎可以确保在每个NUMA节点上均匀分配内存。

(启用HT ...)启用Intel TurboBoost后,我看到CPU利用率不到50%,通常低至35%。一旦TurboBoost关闭,我就会始终看到50%的CPU负载。

很高兴看到,在.NET 4.5任务并行库中,服务器级性能调整是外部化的。总是免费获得它会更好。

详细信息:在具有Server 2k8 R2 SP1 Enterprise的双Xeon E5 v1装备上进行测试。