Filetarea blocurilor de construcții - Threading Building Blocks
| Dezvoltatori | Intel |
|---|---|
| Versiune stabila | 2021.4 / 4 octombrie 2021
|
| Repertoriu | |
| Scris in | C ++ |
| Sistem de operare | FreeBSD, Linux, Solaris, OS X, Windows, Android |
| Tip | bibliotecă sau cadru |
| Licență | dual: comercial / open source ( Apache 2.0 ), plus Freeware |
| Site-ul web |
github intel |
oneAPI Threading Building Blocks ( oneTBB ), fost Threading Building Blocks (TBB), este o bibliotecă de șabloane C ++ dezvoltată de Intel pentru programare paralelă pe procesoare multi-core . Folosind TBB, un calcul este împărțit în sarcini care pot rula în paralel. Biblioteca gestionează și programează fire pentru a executa aceste sarcini.
Prezentare generală
Un program TBB creează, sincronizează și distruge grafice ale sarcinilor dependente în funcție de algoritmi , adică paradigme de programare paralelă la nivel înalt (aka scheletele algoritmice ). Sarcinile sunt apoi executate respectând dependențele grafice. Această abordare grupează TBB într-o familie de tehnici pentru programare paralelă, având ca scop decuplarea programării de particularitățile mașinii de bază.
TBB implementează furtul de lucru pentru a echilibra o sarcină de lucru paralelă între nucleele de procesare disponibile, pentru a crește utilizarea nucleului și, prin urmare, scalarea. Inițial, volumul de lucru este împărțit uniform între nucleele procesorului disponibile. Dacă un nucleu își finalizează lucrarea, în timp ce alte nuclee au încă o cantitate semnificativă de lucru în coada lor, TBB reatribuie o parte din lucrare de la unul dintre nucleele ocupate la nucleul inactiv. Această capacitate dinamică decuplează programatorul de mașină, permițând aplicațiilor scrise folosind biblioteca să se scaleze pentru a utiliza nucleele de procesare disponibile, fără modificări la codul sursă sau la fișierul de program executabil. Într-o evaluare din 2008 a implementării furtului de lucru în TBB, cercetătorii de la Universitatea Princeton au constatat că nu este optimă pentru un număr mare de nuclee de procesoare, provocând până la 47% din timpul de calcul petrecut în programarea cheltuielilor generale atunci când rulează anumite repere pe un sistem cu 32 de nuclee. .
TBB, ca și STL (și partea bibliotecii standard C ++ bazate pe el), folosește șabloane pe scară largă. Acest lucru are avantajul polimorfismului low-overhead , deoarece șabloanele sunt o construcție în timp de compilare pe care compilatoarele C ++ moderne le pot optimiza în mare măsură.
oneTBB este disponibil comercial ca o distribuție binară cu suport și ca software open-source în ambele surse și forme binare.
TBB nu oferă garanții de determinism sau de libertate față de cursele de date .
Conținutul bibliotecii
TBB este o colecție de componente pentru programare paralelă:
- Algoritmi de bază:
parallel_for,parallel_reduce,parallel_scan - Algoritmi avansate:
parallel_while,parallel_do,parallel_pipeline,parallel_sort -
Containere :
concurrent_queue,concurrent_priority_queue,concurrent_vector,concurrent_hash_map - Alocarea memoriei:
scalable_malloc,scalable_free,scalable_realloc,scalable_calloc,scalable_allocator,cache_aligned_allocator -
Excludere reciprocă :
mutex,spin_mutex,queuing_mutex,spin_rw_mutex,queuing_rw_mutex,recursive_mutex -
Operații atomice :
fetch_and_add,fetch_and_increment,fetch_and_decrement,compare_and_swap,fetch_and_store - Sincronizare: ștampila de timp globală cu granulație fină
- Planificator de sarcini: acces direct pentru a controla crearea și activarea sarcinilor
Sisteme acceptate
Versiunea comercială TBB 3.0 acceptă Windows (XP sau o versiune ulterioară ), OS X (versiunea 10.5.8 sau o versiune ulterioară) și Linux utilizând Visual C ++ (versiunea 8.0 sau o versiune ulterioară, numai pentru Windows), compilatorul Intel C ++ (versiunea 11.1 sau o versiune ulterioară) sau GNU Compiler Collection (gcc). În plus, comunitatea open source TBB a contribuit cu patch-uri pentru Solaris , PowerPC , Xbox 360 , QNX Neutrino și FreeBSD .
Vezi si
- Intel oneAPI Base Toolkit
- Intel Performance Primitives integrate (IPP)
- Bibliotecă Intel OneAPI Data Analytics (oneDAL)
- Biblioteca Intel oneAPI Math Kernel (oneMKL)
- Intel Advisor
- Inspectorul Intel
- Intel VTune Profiler
- Colecții simultane Intel (CnC)
- Scheletul algoritmic
- Calcul paralel
- Listă de biblioteci multi-threading C ++
- Lista bibliotecilor de șabloane C ++
- Biblioteca de modele paralele
- Grand Central Dispatch (GCD)
Note
Referințe
- Voss, Michael; Asenjo, Rafael; Reinders, James (2019), Pro TBB , Apress, doi : 10.1007 / 978-1-4842-4398-5 , ISBN 978-1-4842-4397-8, S2CID 195847637
- Reinders, James (iulie 2007), Intel Threading Building Blocks: Outfitting C ++ for Multi-core Processor Parallelism (Paperback ed.), Sebastopol: O'Reilly Media, ISBN 978-0-596-51480-8
- Voss, M. (octombrie 2006), Demistifică paralelismul scalabil cu algoritmi generici paraleli generici ai blocurilor de construcție Intel
- Voss, M. (decembrie 2006), Activați paralelismul sigur și scalabil cu containerele simultane ale blocurilor de construcție Intel
- Hudson, Richard L .; Saha, Bratin; Adl-Tabatabai, Ali-Reza; Hertzberg, Benjamin C. (2006), „McRT-Malloc”, Lucrările simpozionului internațional 2006 privind gestionarea memoriei - ISMM '06 , pp. 74–83, doi : 10.1145 / 1133956.1133967 , ISBN 978-1595932211, S2CID 9120368