La programmazione parallela è un’artificio, dato che il processore è uno solo, e quindi il codice è inerentemente seriale, si tratta solo di disporre in modo opportuno i punti di sincronizzazione fra i processi e i thread, giusto? Ovviamente no: quasi tutte le macchine moderne hanno più di una unità di elaborazione e il trovare il modo corretto di serializzare il codice non è più così semplice.
A volte il codice è inerentemente seriale per conto suo e i lock fanno solo perdere tempo, a volte una parallelizzazione del codice a grana fine porta un decadimento di performance invece di un miglioramento per il costo dei lock, a volte è facile incorrere in deadlock.
Ci sono altri approcci alla creazione di codice parallelo, come quello che va sotto il nome di STM, Software Transactional Memory.
Una ricerca delle parole chiave porta a una pagina di Wikipedia, una dissertazione sui siti di ricerca di Microsoftù e di Sun Microsystems.
Intel certamente sa qualcosa di come sono fatti i processori e mette a frutto la sua conoscenza in una collana di prodotti software fatti per chi ha bisogno del massimo di prestazioni o fa ricerca.
La buona notizia è che alcuni di questi prodotti escono dai laboratori quando sono ancora in fase di gestazione in modo da permettere alla comunità di metterli alla prova sul campo e fare ricerca con prodotti della prossima generazione.
Il sito di riferimento i ricercatori si chiama whatif, ossia cosa succederebbe se, e uno dei prodotti a disposizione gratuitamente è un compilatore che aiuta a familiarizzarsi con STM.
Una demo in flash sul sito Intel aiuta a capire in cosa si differenzia il modello STM dal modello tradizionale.
Un compilatore parallelo da Intel
La programmazione parallela è un’artificio, dato che il processore è uno solo, e quindi il codice è inerentemente seriale, si […]