Sto facendo pesanti calcoli matematici utilizzando Math.Net Numerics
in parallelo all'interno del blocco Parallel.For
.Parallelamente. Per non utilizzare tutti i core
Quando eseguo il codice nel mio sistema locale con 4 core (2 * 2), utilizza tutti i 4 core.
Ma quando eseguo lo stesso codice nel nostro server di sviluppo con 8 core (4 * 2), utilizza solo 4 core.
Ho provato a impostare MaxDegreeOfParallism, ma non ho potuto aiutare.
Qualche idea sul perché tutti i core non vengano utilizzati.
Di seguito è riportato un codice di esempio.
Parallel.For(0,10000,(i)=>
{
// heavy math computations using matrices
});
Fa il server ha 8 core o 4 core che supportano hyper threading – vcsjones
@vcsjones:?? 4 CPU e ciascuno ha 2 core in modo totale 4 * 2 = 8 core – malkam
Stai utilizzando un provider nativo Si noti che in Algebra lineare Math.NET Numerics è esso stesso parallelizzato (almeno in alcune parti) - se si preferisce eseguire la propria parallelizzazione in cima, si consideri di disabilitare la parallelizzazione di Math.NET chiamando 'Control.UseSingleThread();' –