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

C# 是否有一个任务调度器非常适合在具有超线程的处理器上进行浮点计算?,c#,floating-point,task-parallel-library,.net-4.5,hyperthreading,C#,Floating Point,Task Parallel Library,.net 4.5,Hyperthreading,我想使用TPL管理对英特尔IPP或MKL库的调用。当然,这些是浮点计算密集型指令。由于“超线程”只为每个内核分配一个浮点线程,因此我希望有一种智能调度任务的方法。这不是“超线程”的工作方式。没有这样的“赋值”,也没有“每个内核浮点线程”的概念。内核动态地选择一个可用的浮点执行单元。它们有好几个,但它们没有相同的功能。拥有许多执行引擎是超线程工作的首要原因。人为地试图绕过可能是超线程的逻辑内核并不会让它更快,反而会让它更慢,因为您很可能会绕过使用其他闲置引擎的机会 从你的另一个问题来看,我知道你实

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

这不是“超线程”的工作方式。没有这样的“赋值”,也没有“每个内核浮点线程”的概念。内核动态地选择一个可用的浮点执行单元。它们有好几个,但它们没有相同的功能。拥有许多执行引擎是超线程工作的首要原因。人为地试图绕过可能是超线程的逻辑内核并不会让它更快,反而会让它更慢,因为您很可能会绕过使用其他闲置引擎的机会


从你的另一个问题来看,我知道你实际上还没有做到这一点。因此,这很可能是过早优化的情况。首先让它运行,看看它是否足够好。如果缺少,那么就选择更好的硬件,例如Xeon类处理器。

为了使IPP FFT有效并具有性能,我必须按照每个包的内核数乘以包数来剥离任务

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

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

很高兴看到,在.NET4.5任务并行库中,服务器类性能调整被外部化。如果能一直免费得到,那就更好了


详细信息:在服务器为2k8 R2 SP1 Enterprise的dual Xeon E5 v1装备上进行了测试。

我已使其正常工作,并将立即更新其他问题。同时,是否愿意将HT工作方式的相关描述联系起来?