并行.不使用所有核心

mal*_*kam 9 c# task-parallel-library mathnet-numerics parallel.for math.net

我正在使用Math.Net Numerics平行内部进行繁重的数学计算Parallel.For块.

当我在本地系统中运行4核(2*2)的代码时,它使用全部4个核心.

但是,当我在具有8个内核(4*2)的开发服务器中运行相同的代码时,它只使用4个内核.

我试过设置MaxDegreeOfParallism,但无法帮助.

知道为什么没有使用所有核心.

以下是示例代码.

Parallel.For(0,10000,(i)=>
{

 // heavy math computations using matrices
});
Run Code Online (Sandbox Code Playgroud)

the*_*heB 1

来自MSDN

默认情况下,For 和 ForEach 将利用底层调度程序提供的线程数,因此更改默认值的 MaxDegreeOfParallelism 仅限制将使用的并发任务数。

我阅读文档的方式是:如果底层调度程序仅提供单个线程,那么设置MaxDegreeOfParallelism > 1仍将导致单个线程。