我在Parallel.For
區塊內並行使用Math.Net Numerics
進行繁重的數學計算。Parallel.For不利用所有核心
當我使用4個內核(2 * 2)在本地系統中運行代碼時,它使用全部4個內核。
但是,當我在我們的開發服務器上運行8個內核(4 * 2)的相同代碼時,它僅使用4個內核。
我試過設置MaxDegreeOfParallism,但忍不住。
任何想法爲什麼所有核心都沒有被利用。
以下是樣本代碼。
Parallel.For(0,10000,(i)=>
{
// heavy math computations using matrices
});
您的服務器是否有支持超線程的8個內核或4個內核? – vcsjones
@vcsjones:4個CPU,每個CPU有2個內核,因此總共4 * 2 = 8個內核 – malkam
您是否使用本地提供程序? Math.NET Numerics本身並行化(至少部分) - 如果您更喜歡在頂部進行自己的並行化,請考慮通過調用Control.UseSingleThread()來禁用Math.NET的並行化;使用Intel的ChristophRüegg的 –