Blocchi di costruzione Intel Threading
| Blocchi di costruzione Intel Threading | ||
|---|---|---|
| componente oneAPI | ||
| Informazione Generale | ||
| tipo di programma | Biblioteca | |
| sviluppatore | Intel | |
| Licenza | Doppio: proprietario e open source | |
| Informazioni tecniche | ||
| Previsto in | C++ | |
| Versioni | ||
| Ultima versione stabile | 4.0 (08 settembre 2011) | |
| Collegamenti | ||
Intel Threading Building Blocks (Intel TBB) è una libreria basata su modelli per C++ sviluppata da Intel per facilitare la scrittura di programmi che sfruttano le capacità di parallelismo dei processori con architettura multi - core .
Questa libreria fornisce algoritmi e strutture di dati che consentono al programmatore di evitare parzialmente le complicazioni dell'utilizzo di pacchetti di gestione dei thread nativi in cui la creazione, la sincronizzazione e la distruzione dei thread sono esplicite e dipendenti dal sistema. Al contrario, la libreria astrae l'accesso a più processori consentendo di trattare le operazioni come attività che vengono partizionate automaticamente e dinamicamente tra i processori disponibili da un gestore di runtime.
Questo approccio fa rientrare Intel TBB nella famiglia di soluzioni per la programmazione parallela che consentono di disaccoppiare la programmazione dalle particolari caratteristiche della macchina.
Storia
La prima versione di questa libreria (versione 1.0) è stata rilasciata da Intel il 29 agosto 2006, un anno dopo il rilascio del primo processore multi-core con architettura x86 di Intel, il Pentium D. La versione 1.1 è stata rilasciata il 10 aprile 2007. Questa nuova versione è stata introdotta auto_partitioneroffrendo un'alternativa automatica alla specifica manuale della granulometria ideale per la parallelizzazione delle attività. Nello stesso anno è stato incluso nella versione 10.0 di Intel C++ Compiler Professional Edition . [ 1 ]
La versione 2.0 è stata rilasciata il 24 luglio 2007. Questa versione includeva il rilascio del codice sorgente e la creazione di un progetto collaborativo open source . [ 2 ] Il codice è rilasciato sotto GPLv2 con una licenza "runtime exception" , la stessa licenza usata dall'implementazione di GCC della C++ Standard Library . Tuttavia, Intel TBB è ancora distribuito in una versione commerciale senza codice sorgente che fornisce supporto ma non aggiunge funzionalità extra.
La versione 2.1 è stata pubblicata il 22 luglio 2008, sebbene sia stata aggiornata più volte. Offre nuove funzionalità come affinità tra attività e thread, supporto per l'annullamento, gestione delle eccezioni e adattatori portatili per i thread. L'ultimo aggiornamento pubblicato di questa versione è stato l' aggiornamento 4 del 22 aprile 2009.
Attuazione
Intel TBB implementa il furto di attività per bilanciare il carico di lavoro sui core di elaborazione disponibili al fine di aumentare l'utilizzo dei core e la scalabilità del programma. Inizialmente il carico di lavoro è diviso equamente tra i core di elaborazione disponibili. Se uno di essi termina il proprio lavoro mentre un altro ha ancora un carico significativo sulla coda delle attività, il task manager riassegna parte di questo lavoro al kernel inattivo. Questa capacità di riallocazione dinamica disaccoppia la programmazione dalla macchina, consentendo alle applicazioni scritte utilizzando questa libreria di scalare per utilizzare tutti i core di elaborazione disponibili senza alcuna modifica al codice sorgente o agli eseguibili.
Intel TBB, seguendo l'esempio di STL , si basa sull'uso di modelli poiché il polimorfismo in fase di compilazione dovrebbe essere più efficiente del tradizionale polimorfismo in fase di esecuzione.
Contenuti
Intel TBB fornisce, tra l'altro, la seguente raccolta di componenti per la programmazione parallela:
- Algoritmi di base:
parallel_for,parallel_reduce,parallel_scan. - Algoritmi avanzati:
parallel_while,parallel_do,pipeline,parallel_sort. - Contenitori:
concurrent_queue,concurrent_vector,concurrent_hash_map. - Riserva di memoria:
scalable_allocator,cache_aligned_allocator. - Mutua esclusione:
mutex,spin_mutex,queuing_mutex,spin_rw_mutex,queuing_rw_mutex,recursive mutex. - Operazioni atomiche:
fetch_and_increment,fetch_and_decrement,fetch_and_add,compare_and_swap,fetch_and_store. - Tempo impiegato:
tick_count. - Gestore attività:
task.
Sistemi supportati
Intel TBB 2.1 nella sua versione commerciale è supportato su Microsoft Windows (XP o successiva), Mac OS X (versione 10.4.4 o successiva) e Linux , supportando diversi compilatori: Visual C++ (versione 7.1 o successiva, solo su Windows), Intel Compilatore C++ (versione 9.0 o successiva) o GCC . [ 3 ] Inoltre, l'implementazione gratuita di Intel TBB è supportata su Sun Solaris , [ 4 ] PowerPC , XBOX 360 , QNX Neutrino e FreeBSD .
A partire da settembre 2008, Intel TBB era disponibile come pacchetto per le seguenti distribuzioni Linux:
Vedi anche
- programmazione parallela
- Ciccio
- Apri MP
- OmpSs
- Fascino++
Riferimenti
- ^ "I nuovi prodotti Intel semplificano e velocizzano lo sviluppo di software per processori multi-core" . Archiviato dall'originale il 15 luglio 2009 . Estratto il 23 aprile 2009 .
- ↑ Thread Building Blocks
- ^ "Intel Threading Building Blocks - Note di rilascio versione 2.0" . pp. 4-5. Archiviato dall'originale il 19 luglio 2011 . Estratto il 23 aprile 2009 .
- ^ "Utilizzo di Intel Threaded Building Blocks (TBB) con Sun Studio Express" . Estratto il 23 aprile 2009 .
Bibliografia
- Reinders, James (luglio 2007). Intel Threading Building Blocks: equipaggiamento di C++ per il parallelismo di processori multi-core . Sebastopoli: O'Reilly Media. ISBN 978-0-596-51480-8 .
Collegamenti esterni
- Sito Web in versione commerciale ( collegamento interrotto disponibile su Internet Archive ; vedi cronologia , prima e ultima versione ).
- Sito web del progetto open source