Filetarea blocurilor de construcții - Threading Building Blocks

Filetarea blocurilor de construcție
Dezvoltatori Intel
Versiune stabila
2021.4 / 4 octombrie 2021 ; acum 6 zile ( 2021-10-04 )
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 .com / oneapi-src / oneTBB
intel .com / oneTBB

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

Note

Referințe

linkuri externe