Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Iniziamo a pensare manycore
Scritto da Luca Domenichini il 06-07-2011 ore 08:52
Parallel Studio XE
Dopo vent'anni di crescita, la frequenza di clock ha raggiunto il capolinea e negli ultimi cinque anni l'attenzione dei progettisti di processori si è spostata sull'architettura multicore: due, quattro, anche dieci core per singolo processore. La società Intel sta già testando processori a 32 e 48 core, con la promessa di superare i 50 il prossimo anno, con l'arrivo delle tecnologie a 22 nanometri. Tutto questo a patto che il software sia in grado di sfruttare al meglio la nuova architettura.

Impossibile garantirlo senza che gli sviluppatori vengano preparati con un'adeguata formazione e, soprattutto, un nuovo punto di vista, che ridefinisca e attenui l'enorme complessità che si cela dietro la programmazione parallela. La nuova visione che deve entrare a far parte del loro bagaglio culturale è il task, che deve sostituire quello di thread. Mentre i thread rappresentano un concetto a basso livello delle istruzioni affidate all'hardware, con il quale si definisce nel dettaglio il "cosa" e per quanto possibile il "quando", i task si pongono a un livello d'astrazione superiore, definendo solo i compiti da svolgere, ma lasciando a compilatore e hardware la scelta di come e quando svolgerli. Grazie ai task il lavoro diventa più facile, poiché non è più richiesto di spezzare algoritmi e programmi in più parti per eseguire manualmente la mappatura 1:1 con i thread hardware.

Con questa intuizione è nato presso il Massachussetts Institute of Technology (MIT) il progetto di ricerca Cilk (pronunciato come "silk", seta), uno schedulatore di task guidato da una filosofia piuttosto semplice: un programmatore deve concentrarsi sulla parte logica ed esporne le sezioni da eseguire in parallelo, lasciando al runtime il compito di eseguirle con efficienza sulla piattaforma sottostante (load balancing, sincronizzazione, protocolli di comunicazione): ad esempio, un ciclo for diventa parallelo utilizzando semplicemente cilk_for. Acquistando la società Cilk Arts Inc., detentrice della licenza d'uso di Cilk, Intel ha potuto produrre il proprio Cilk Plus, un'estensione a C e C++, specifica per lo sviluppo di software parallelo in maniera efficiente e affidabile, e alla quale è stata dedicata una serie di articoli.

Cilk Plus applicato ai template C++ ha permesso la nascita degli Intel Threading Building Blocks (TBB), un progetto open source utilizzato da diversi sistemi operativi e processori. Microsoft ha sviluppato questo progetto nelle Task Parallel Library (TPL) per .NET e in seguito nelle Parallels Patterns Library (PPL) per C++. Apple ha lavorato in modo analogo con i task, realizzando il Grand Central Dispatch (GCD).

E' quindi sempre più importante pensare parallelo, pensare manycore, ma per farlo occorrono strumenti come Cilk Plus, definiti più volte "work-stealing", poiché rubano parte del lavoro che sarebbe normalmente demandato alla mente umana, la quale, è risaputo, è poco incline all'alta velocità e al multithreading.
Precedente: WebCL, la potenza della GPU a disposizione del Web
Successiva: StartSSL, il coltellino svizzero dei certificati digitali
Copyright Programmazione.it™ 1999-2014. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.206 secondi.