Supercomputer/Software: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Diablo (discussione | contributi)
mNessun oggetto della modifica
 
Riga 9:
 
== Programmi ==
I programmi per supercomputer vanno appositamente progettati cercando di rendere gli algoritmi di calcolo il più paralleli possibile. La parallelizzabilità di un algoritmo dipende strettamente dal problema trattato. Un problema facilmente parallelizzabile è un problema che può essere scomposto in tanti sottoproblemi più semplici che non siano collegati o che siano collegati in modo lasco. Difatti in un supercomputer uno dei problemi maggiori è fornire una comunicazione efficiente tra le varie unità difatti il tempo di accesso ad un dato che non si trovi nella memoria locale eldel processore può essere molto elevato e comunque un numero elevato di comunicazioni tra processori può saturare la banda di comunicazione peggiorando drammaticamente le prestazioni. Quindi è imperativo realizzare programmi che siano il più indipendenti possibile. Un esempio classico di problema facilmente parallelizzabile è la realizzazione di animazioni fotorealistiche con il computer. Una volta impostata l'animazione un computer principale trasmette ai nodi di calcolo i fotogrammi da elaborare. Durante l'elaborazione i nodi non devono comunicare tra loro e la comunicazione con il nodo principale si ha solamente durante la fase di caricamente dei dati e di salvataggio dei fotogrammi. Nel campo scientifico i calcoli di fluidodinamica o di previsione del tempo sono ben parallellizzabili. Invece programmi che per esempio richiedo frequenti accessi ad ampie matrici sparse sono difficilmente parallelizzabili dato che ogni nodo cercherà di accedere alla memoria comune con elevata frequenza saturando rapidamente i canali di comunicazione.
 
{{avanzamento|100%}}