Prova scritta di High Performance Computing del 9 febbraio 2023 =============================================================== Alcune osservazioni: - La valutazione delle risposte ha tenuto conto della qualità del testo: uso corretto della punteggiatura, chiarezza e precisione delle argomentazioni, completezza. - Il motivo principale per cui un programma OpenMP eseguito con più core possa risultare più lento della versione eseguita con un solo core (situazione che, peraltro, si verificava in moltissimi degli esempi visti in laboratorio) è l'overhead dovuto alla gestione del pool di thread che in alcuni casi potrebbe annullare il beneficio dovuto alla parallelizzazione. Questo è vero soprattutto nei casi in cui i blocchi paralleli effettuano operazioni "semplici". - In alcune risposte alla seconda domanda (vantaggi/svantaggi delle architetture a memoria distribuita) si tende a confondere causa ed effetto. Non è corretto affermare che le architetture a memoria distribuita consentono di eseguire i processi in modo indipendente: questo è vero per tutte le architetture parallele (incluse a memoria condivisa), ma solo se le applicazioni sono effettivamente "embarrassingly parallel", cosa che non è sempre vera. - Per chi fosse interessato, sulla pagina del corso c'è un link con la soluzione funzionante del programma MPI per il calcolo di una sum-reduction usando operazioni punto-punto. Il testo della domanda forniva (non a caso) la soluzione all'esercizio sull'operazione broadcast visto in laboratorio, che era estremamente più semplice da implementare rispetto alla riduzione ad albero vista a lezione.