Blocuri de construcție Intel Threading | |
---|---|
Tip de | biblioteca (programare) |
Dezvoltator | Intel |
Scris in | C++ , Asamblator |
Sistem de operare | Platformă transversală |
ultima versiune | 2021.5.0 [1] (22 decembrie 2021) |
Licență | Două opțiuni: comercial și Apache 2.0 |
Site-ul web | threadingbuildingblocks.org |
Intel Threading Building Blocks (cunoscut și ca TBB ) este o bibliotecă de șabloane C++ multiplatformă [2] dezvoltată de Intel pentru programare paralelă. Biblioteca conține algoritmi și structuri de date care permit programatorului să evite multe dintre complexitățile care vin cu implementările tradiționale de threading, cum ar fi firele POSIX , firele Windows sau firele Boost , care creează fire separate de execuție care sunt sincronizate și oprite manual. Biblioteca TBB rezuma accesul la firele individuale. Toate operațiunile sunt tratate ca „sarcini” care sunt distribuite dinamic între nucleele procesorului. În plus, se realizează utilizarea eficientă a memoriei cache . Un program scris folosind TBB creează, sincronizează și rezolvă grafice de dependență de sarcini conform unui algoritm. Sarcinile sunt apoi executate în funcție de dependențe. Această abordare vă permite să programați algoritmi paraleli la un nivel înalt, făcând abstracție de la detaliile arhitecturii unei anumite mașini.
Biblioteca este o colecție de șabloane de clasă și funcții pentru programare paralelă. Biblioteca are:
Versiunea 1.0 a fost lansată de Intel pe 29 august 2006, la un an după lansarea primului său procesor Pentium D dual-core .
Versiunea 1.1 a fost lansată pe 10 aprilie 2007. Pe 5 iunie, biblioteca a fost adăugată la Intel C++ Compiler 10.0 Professional Edition.
Versiunea 2.0 a fost lansată pe 24 iulie 2007. Codul sursă al bibliotecii a fost deschis și un proiect open source a fost creat sub licența GPLv2. Biblioteca este disponibilă și sub o licență comercială fără cod sursă, dar cu acces la suport tehnic. Funcționalitatea ambelor biblioteci este aceeași.
Versiunea 2.1 a fost lansată pe 22 iulie 2008.
Versiunea 2.2 a fost lansată pe 5 august 2009 . Include suport pentru funcțiile lambda C++0x .
Versiunea 3.0 a fost lansată pe 4 mai 2010. Lista de îmbunătățiri http://software.intel.com/en-us/blogs/2010/05/04/tbb-30-new-today-version-of-intel-threading-building-blocks/ .
Versiunea 4.0 a fost lansată pe 8 septembrie 2011. A fost adăugată o nouă funcționalitate, consultați https://web.archive.org/web/20111213150434/http://threadingbuildingblocks.org/whatsnew.php
Începând cu versiunea 3.0, actualizările intermediare TBB sunt lansate în formatul TBB X.0 update N, de exemplu TBB 4.0 update 2.
În acest program, elementele matricei sunt procesate de funcția Calculate în paralel.
// Fișierele de antet necesare sunt incluse #include „tbb/blocked_range.h” #include „tbb/parallel_for.h” // Numărul de elemente vectoriale const int SIZE = 10000000 ; // Clasa de gestionare a clasei CalculationTask { vector < double > & myArray ; public : // Operatorul () este executat pe un interval din spațiul de iterație operator void ()( const tbb :: blocked_range < int > & r ) const { pentru ( int i = r . begin (); i != r . end (); i ++ ) Calculați ( myArray [ i ]); } // Constructor CalculationTask ( vector < dublu > &a ) : myArray ( a ) { } }; int main () { vector < double > myArray ( SIZE ); // Rulați algoritmul paralel pentru tbb :: parallel_for ( tbb :: blocked_range < int > ( 0 , SIZE ), CalculationTask ( myArray )); returnează 0 ; }Folosind funcții lambda din C++11:
// Fișierele de antet necesare sunt incluse #include „tbb/blocked_range.h” #include „tbb/parallel_for.h” #include <vector> // Numărul de elemente vectoriale const size_t SIZE = 10000000 ; int main () { std :: vector < double > myArray ( SIZE ); // Rulați algoritmul paralel pentru tbb :: parallel_for ( tbb :: blocked_range < size_t > ( 0 , SIZE ), // Funcția Lambda [ & myArray ]( const tbb :: blocked_range < size_t > & r ) { pentru ( size_t i = r . begin (); i != r . end (); i ++ ) Calculați ( myArray [ i ]); }); returnează 0 ; }Versiunea comercială a TBB 4.0 acceptă Microsoft Windows (XP sau o versiune ulterioară), Mac OS X (versiunea 10.5.8 sau o versiune ulterioară) și Linux folosind diferite compilatoare ( Visual C++ (versiunea 8.0 sau mai mare, numai pe Windows), compilatorul Intel C++ (versiunea 11.1 sau mai recent) sau GNU Compiler Collection (gcc, versiunea 3.4 și mai recentă)). În plus, comunitatea TBB open source l-a portat la Sun Solaris , PowerPC , Xbox 360 , QNX Neutrino și FreeBSD .