utilizzo della memoria di programmazione parallela

1

Sto iniziando a imparare la programmazione parallela in c ++ e ho un programma come questo:

for i = 1:N
    do something time and memory intensive
end

Se lo programma in parallelo e i miei processori hanno accesso condiviso alla memoria, la programmazione in parallelo sarà di aiuto? Ho pensato che forse sto per traboccare la memoria, dal momento che sto permettendo a 15 processori di eseguire un compito intensivo di memoria allo stesso tempo, il che potrebbe renderlo più lento, ma non ho potuto davvero scoprire se fosse davvero così.

    
posta ckoe 08.09.2016 - 09:49
fonte

1 risposta

1

Nessuno di noi può dirti se si verificherà un sovraccarico della memoria, perché non sappiamo quale sia il tuo software o su quale piattaforma verrà eseguita. Sulla maggior parte dei sistemi operativi moderni, l'eliminazione della RAM disponibile causerà lo swapping / paging, che provoca un notevole impatto sulle prestazioni.

Ma anche se non si esaurisce la memoria, il multithreading eccessivo può comunque causare problemi di prestazioni.

  • Se si dispone di più thread attivi rispetto ai core CPU, il sistema operativo continuerà a passare da uno all'altro. Il tempo impiegato per il cambio di contesto non verrà speso per fare un lavoro utile.
  • I processori moderni utilizzano la memoria cache su chip per aggirare la lentezza della RAM. Se i thread utilizzano molta memoria, ogni volta che il contesto passa a un thread diverso, il processore scoprirà che la sua cache è inutile: è piena di dati elaborati dal thread precedente. Ciò richiederà più lettura dei dati dalla RAM e rallenterà le cose.
risposta data 08.09.2016 - 13:46
fonte

Leggi altre domande sui tag