High performance computing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 80:
== Algoritmi ==
 
È necessario considerare l'importanza degli [[algoritmo|algoritmi]]. Quest'ultimo è un aspetto spesso sottovalutato. Infatti, per utilizzare al meglio un computer che esegua contemporaneamente su molteplici complessi circuitali svariati gruppi di istruzioni occorre risolvere due problemi. È necessario, innanzitutto, sviluppare in [[software]] un [[algoritmo]] che si presti a essere suddiviso in più parti, ossia in diverse sequenze di istruzioni, da eseguire in parallelo. In secondo luogo, occorre disporre di un [[linguaggio di programmazione|linguaggio]] ed un [[compilatore]], che sappia ottimizzare nelle giuste sequenze da distribuire in parallelo le istruzioni scritte dal programmatore <ref name=nota2/>. Tra questi linguaggi abbiamo ad esempio l'[[Occam (linguaggio di programmazione)|Occam]].
 
<ref name=nota2/>.
La progettazione di un algoritmo efficiente è, spesso, più efficace di un hardware sofisticato. Purtroppo, non è facile trovare la soluzione giusta. Con la disponibilità del calcolo parallelo, il ricercatore che debba sviluppare una nuova applicazione potrebbe essere invogliato a cercare fin dall'inizio algoritmi intrinsecamente parallelizzabili. Più difficile è, evidentemente, il compito di chi debba riadattare software applicativo già esistente alle nuove possibilità tecnologiche.
Tra questi linguaggi abbiamo ad esempio l'[[Occam (linguaggio di programmazione)|Occam]].
 
La progettazione di un algoritmo efficiente è, spesso, più efficace di un hardware sofisticato.
Purtroppo, non è facile trovare la soluzione giusta. Con la disponibilità del calcolo parallelo, il ricercatore che debba sviluppare una nuova applicazione potrebbe essere invogliato a cercare fin dall'inizio algoritmi intrinsecamente parallelizzabili. Più difficile è, evidentemente, il compito di chi debba riadattare software applicativo già esistente alle nuove possibilità tecnologiche.
Bisogna inoltre considerare i limiti dell'elaborazione parallela. A titolo d'esempio,si immagini di avere 52 carte di uno stesso mazzo distribuite in modo casuale e di volerle mettere in ordine. Se ci fossero quattro giocatori a volersi dividere le attività secondo i colori (cuori, quadri, fiori, picche) si farebbe certamente prima che se si dovesse svolgere la stessa attività da soli. Ma fossero 52 i giocatori, tutti intorno allo stesso tavolo, a voler ordinare il mazzo si farebbe probabilmente solo una gran confusione. Questo banale esempio può far comprendere come esista un limite al di là del quale non conviene spingere sul parallelismo degli agenti ma, piuttosto, sulla velocità del singolo
<ref name=nota2/>.