High performance computing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
ZimbuBot (discussione | contributi)
m WPCleaner v1.43 - Disambigua corretto un collegamento - Italiano
FrescoBot (discussione | contributi)
m Bot: spazio dopo segni di punteggiatura e modifiche minori
Riga 72:
Purtroppo fornire [[standard (informatica)|standard]] ad alto livello per le applicazioni HPC non è un'impresa facile poiché nascono ogni giorno nuove architetture per il calcolo ad alte prestazioni, ognuna con specifiche caratteristiche diverse dalle altre e che devono essere sfruttate in maniera adeguata per raggiungere l'alto livello di prestazione richiesto.
 
I programmatori HPC sono riluttanti a sacrificare le prestazioni in cambio di una maggiore facilità di programmazione, dunque è necessario un modello standard che permetta di sfruttare al massimo tutti i tipi di piattaforma. Vi sono poi ulteriori vincoli: il modello di programmazione deve essere di facile comprensione per semplificare l'identificazione dei [[bug]] e la loro correzione. Deve essere [[scalabilità|scalabile]], per far fronte all'aumento di complessità del problema e quello di potenza della macchina. Infine, poiché quello dell'HPC è una mercato relativamente piccolo, i produttori non sarebbero in grado di far fronte ad un'elevata quantità di modelli di programmazione diversi e di conseguenza, lo standard, deve essere compatibile con la maggior parte dei codici e piattaforme per HPC
<ref name=nota1/>.
 
Riga 86:
=== 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 [[istruzione (informatica)|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]].
 
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.
Riga 108:
* La ricerca di metodi di conservazione di antichi testi e scritture per l'[[Archeologia]];
* Lo sviluppo di nuovi [[farmaci]] in [[Farmacologia]];
* Lo studio delle [[proteine]] in [[Medicina]], questo molto importante per una futura cura contro la [[malattie degenerative]];
Questi sono comunque solo alcune delle possibili applicazioni dell'HPC<ref name=nota4 /><ref name=nota1/><ref name=nota2/>.
 
Riga 120:
 
== Bibliografia ==
* Laurence Tianruo Yang, Minyi Guo, ''High-performance computing: paradigm and infrastructure'', Wiley Interscienze, 2006. ISBN 978-0-471-65471-1.
* [http://www.mondodigitale.net/Rivista/03_numero_uno/high_performance_computing.pdf Evoluzione e prospettive dell'High performance computing], Ernesto Hoffman.
* [http://www.afs.enea.it/project/cmast/Documenti/web/documentazione/CalcoloEAI_Agosto08.pdf Calcolo numerico ad alte prestazioni], Vincenzo Artale, Massimo Celino.