Blocuri de construcție Intel Threading
| Blocuri de construcție Intel Threading | ||
|---|---|---|
| componenta oneAPI | ||
| Informatii generale | ||
| tip de program | Bibliotecă | |
| dezvoltator | Intel | |
| Licență | Dual: proprietar și sursă deschisă | |
| Informații tehnice | ||
| Programat în | C++ | |
| Versiuni | ||
| Ultima versiune stabilă | 4.0 (08 septembrie 2011) | |
| Legături | ||
Intel Threading Building Blocks (Intel TBB) este o bibliotecă bazată pe șabloane pentru C++ dezvoltată de Intel pentru a facilita scrierea de programe care exploatează capacitățile de paralelism ale procesoarelor cu arhitectură multi - core .
Această bibliotecă oferă algoritmi și structuri de date care permit programatorului să evite parțial complicațiile utilizării pachetelor native de gestionare a firelor în care crearea, sincronizarea și distrugerea firelor sunt explicite și depind de sistem. În schimb, biblioteca abține accesul la mai multe procesoare, permițând operațiunilor să fie tratate ca sarcini care sunt parționate automat și dinamic între procesoarele disponibile de către un manager de rulare.
Această abordare face ca Intel TBB să fie inclus în familia de soluții pentru programare paralelă care permit decuplarea programării de caracteristicile particulare ale mașinii.
Istoric
Prima versiune a acestei biblioteci (versiunea 1.0) a fost lansată de Intel pe 29 august 2006, la un an după lansarea primului procesor Intel cu arhitectură x86 multi-core , Pentium D. Versiunea 1.1 a fost lansată pe 10 aprilie 2007. Această nouă versiune a introdus auto_partitioneroferind o alternativă automată la specificarea manuală a mărimii de granulație ideală pentru paralelizarea sarcinilor. În același an, a fost inclus în versiunea 10.0 a Intel C++ Compiler Professional Edition . [ 1 ]
Versiunea 2.0 a fost lansată pe 24 iulie 2007. Această versiune a inclus lansarea codului sursă și crearea unui proiect de colaborare open source . [ 2 ] Codul este lansat sub GPLv2 cu o licență „excepție de rulare” , aceeași licență folosită de implementarea de către GCC a Bibliotecii standard C++ . Cu toate acestea, Intel TBB este încă distribuit sub o versiune comercială fără cod sursă care oferă suport, dar nu adaugă funcționalități suplimentare.
Versiunea 2.1 a fost publicată pe 22 iulie 2008, deși a fost actualizată de mai multe ori. Aduce caracteristici noi, cum ar fi afinitatea task-thread, suport pentru anulare, gestionarea excepțiilor și adaptoare portabile pentru fire. Ultima actualizare publicată a acestei versiuni a fost actualizarea 4 din 22 aprilie 2009.
Implementare
Intel TBB implementează furtul de sarcini pentru a echilibra sarcina de lucru față de nucleele de procesare disponibile pentru a crește utilizarea nucleului și scalabilitatea programului. Inițial, volumul de lucru este împărțit în mod egal între nucleele de procesare disponibile. Dacă unul dintre ei își termină munca în timp ce altul are încă o sarcină semnificativă în coada de activități, managerul de activități reatribuie o parte din această muncă miezului inactiv. Această capacitate de realocare dinamică decuplează programarea de la mașină, permițând aplicațiilor scrise folosind această bibliotecă să se scaleze pentru a utiliza toate nucleele de procesare disponibile fără nicio modificare a codului sursă sau executabilelor.
Intel TBB, urmând exemplul STL , se bazează pe utilizarea șabloanelor, deoarece polimorfismul în timp de compilare este de așteptat să fie mai eficient decât polimorfismul tradițional în timp de rulare.
Conținut
Intel TBB oferă, printre altele, următoarea colecție de componente pentru programare paralelă:
- Algoritmi de bază:
parallel_for,parallel_reduce,parallel_scan. - Algoritmi avansati:
parallel_while,parallel_do,pipeline,parallel_sort. - Containere:
concurrent_queue,concurrent_vector,concurrent_hash_map. - Rezervă de memorie:
scalable_allocator,cache_aligned_allocator. - Excluderea reciprocă:
mutex,spin_mutex,queuing_mutex,spin_rw_mutex,queuing_rw_mutex,recursive mutex. - Operații atomice:
fetch_and_increment,fetch_and_decrement,fetch_and_add,compare_and_swap,fetch_and_store. - Timp luat:
tick_count. - Task Manager:
task.
Sisteme acceptate
Intel TBB 2.1 în versiunea sa comercială este acceptat pe Microsoft Windows (XP sau o versiune ulterioară), Mac OS X (versiunea 10.4.4 sau mai recentă) și Linux , acceptând mai multe compilatoare: Visual C++ (versiunea 7.1 sau mai recentă, numai pe Windows), Intel Compilatorul C++ (versiunea 9.0 sau mai mare) sau GCC . [ 3 ] În plus, implementarea gratuită Intel TBB este acceptată pe Sun Solaris , [ 4 ] PowerPC , XBOX 360 , QNX Neutrino și FreeBSD .
Din septembrie 2008, Intel TBB era disponibil ca pachet pentru următoarele distribuții Linux:
Vezi și
- programare paralelă
- Cilk
- Deschide MP
- OmpSs
- Farmecul++
Referințe
- ^ „Noile produse Intel simplifică și accelerează dezvoltarea software-ului pentru procesoare multi-core” . Arhivat din original pe 15 iulie 2009 . Consultat la 23 aprilie 2009 .
- ↑ Thread Building Blocks
- ↑ „Intel Threading Building Blocks - Note de lansare versiunea 2.0” . pp. 4-5. Arhivat din original pe 19 iulie 2011 . Consultat la 23 aprilie 2009 .
- ^ „Utilizarea blocurilor de construcție cu thread-uri Intel (TBB) cu Sun Studio Express” . Consultat la 23 aprilie 2009 .
Bibliografie
- Reinders, James (iulie 2007). Blocuri de construcție Intel Threading: echiparea C++ pentru paralelismul procesorului cu mai multe nuclee . Sebastopol: O'Reilly Media. ISBN 978-0-596-51480-8 .
Link- uri externe
- Site-ul cu versiunea comercială ( link întrerupt disponibil la Internet Archive ; vezi istoricul , prima și ultima versiune ).
- Site-ul web al proiectului open source