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 2015
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-2015. 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.