Domanda

Sto imparando la programmazione parallela da solo. Mi chiedo se la memoria distribuita sia sempre multiprocesso e il multithread sia sempre memoria condivisa? se il multiprocesso può essere sia per la memoria distribuita che per la memoria condivisa? Grazie e saluti!

È stato utile?

Soluzione

Sì, sì e " sì, in un certo senso "

In un sistema di memoria distribuita, diverse unità CPU hanno i propri sistemi di memoria. L'accesso da un'altra CPU sarà molto probabilmente più lento o con un modello di coerenza più limitato, se davvero è possibile. Questo sarà più tipico di un multiprocessore che passa messaggi.

L'uso di più thread per la programmazione parallela è più un paradigma software che un problema hardware, ma hai ragione, l'uso del termine thread specifica essenzialmente che è in uso una singola memoria condivisa, e può includere o meno processori multipli effettivi. Potrebbe anche non includere più thread del kernel, nel qual caso i thread non verranno eseguiti in parallelo.

Non sono del tutto chiaro sul significato dell'ultima domanda. Certamente, dicendo "memoria distribuita" o " memoria condivisa " implica "distribuito su processori" e "condiviso dai processori", quindi suppongo che i termini siano ragionevolmente applicati ai sistemi multiprocessore o potenzialmente multiprocessore. Se stiamo parlando di più processi in senso software, immagino che sia praticamente un requisito per i sistemi di memoria distribuita, ed essenzialmente un requisito (potrebbero essere chiamati thread) per un sistema di memoria condivisa.

Dovrei aggiungere che esistono sistemi distribuiti con memoria distribuita ma coerenti con la cache e sono un tipo di progettazione multiprocessore di memoria condivisa chiamata NUMA. Solo pochi anni fa queste macchine erano la frangia folle del calcolo parallelo, ma ora i processori Intel Core i7 hanno ha portato NUMA nel mainstream.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top