Intel Threading Building Blocks | |
---|---|
Sorts | bibliotek (programmering) |
Utvecklaren | Intel |
Skrivet i | C++ , Assembler |
Operativ system | Cross plattform |
senaste versionen | 2021.5.0 [1] (22 december 2021) |
Licens | Två alternativ: kommersiellt och Apache 2.0 |
Hemsida | threadingbuildingblocks.org |
Intel Threading Building Blocks (även känd som TBB ) är ett plattformsoberoende C++ mallbibliotek [2] utvecklat av Intel för parallell programmering. Biblioteket innehåller algoritmer och datastrukturer som gör det möjligt för programmeraren att undvika många av de komplexiteter som kommer med traditionella trådningsimplementeringar som POSIX-trådar , Windows-trådar eller Boost-trådar , som skapar separata exekveringstrådar som synkroniseras och stoppas manuellt. TBB-biblioteket sammanfattar åtkomst till enskilda trådar. Alla operationer behandlas som "uppgifter" som är dynamiskt fördelade mellan processorkärnorna. Dessutom uppnås effektiv användning av cachen . Ett program skrivet med TBB skapar, synkroniserar och löser grafer för uppgiftsberoende enligt en algoritm. Uppgifterna utförs sedan enligt beroenden. Detta tillvägagångssätt låter dig programmera parallella algoritmer på hög nivå och abstrahera från detaljerna i arkitekturen för en viss maskin.
Biblioteket är en samling klassmallar och funktioner för parallell programmering. Biblioteket har:
Version 1.0 släpptes av Intel den 29 augusti 2006, ett år efter lanseringen av sin första Pentium D-processor med två kärnor .
Version 1.1 släpptes den 10 april 2007. Den 5 juni lades biblioteket till Intel C++ Compiler 10.0 Professional Edition.
Version 2.0 släpptes den 24 juli 2007. Bibliotekets källkod öppnades och ett projekt med öppen källkod skapades under GPLv2-licensen. Biblioteket är även tillgängligt under kommersiell licens utan källkod, men med tillgång till teknisk support. Funktionaliteten hos båda biblioteken är densamma.
Version 2.1 släpptes den 22 juli 2008.
Version 2.2 släpptes den 5 augusti 2009 . Den inkluderar stöd för C++0x lambda-funktioner .
Version 3.0 släpptes den 4 maj 2010. Lista över förbättringar http://software.intel.com/en-us/blogs/2010/05/04/tbb-30-new-today-version-of-intel-threading-building-blocks/ .
Version 4.0 släpptes den 8 september 2011. Ny funktionalitet har lagts till, se https://web.archive.org/web/20111213150434/http://threadingbuildingblocks.org/whatsnew.php
Från och med version 3.0 släpps TBB interimsuppdateringar i formatet TBB X.0 uppdatering N, till exempel TBB 4.0 uppdatering 2.
I detta program bearbetas arrayelementen parallellt av funktionen Calculate.
// Obligatoriska rubrikfiler ingår #include “tbb/blocked_range.h” #include “tbb/parallel_for.h” // Antal vektorelement const int SIZE = 10000000 ; // Handlarklassklass Beräkningsuppgift { vektor < dubbel > & myArray ; offentliga : // Operator () exekveras på ett intervall från iterationsutrymmets void - operator ()( const tbb :: blocked_range < int > & r ) const { för ( int i = r . börjar (); i != r . slut (); i ++ ) Beräkna ( myArray [ i ]); } // CalculationTask konstruktor ( vektor < dubbel > &a ) : myArray ( a ) { } }; int main () { vektor < dubbel > myArray ( SIZE ); // Kör parallellalgoritmen för tbb :: parallell_for ( tbb :: blocked_range < int > ( 0 , SIZE ), CalculationTask ( myArray )); returnera 0 ; }Använda lambda-funktioner från C++11:
// Nödvändiga rubrikfiler ingår #include “tbb/blocked_range.h” #include “tbb/parallel_for.h” #inkludera <vektor> // Antal vektorelement const size_t SIZE = 10000000 ; int main () { std :: vektor < dubbel > myArray ( SIZE ); // Kör parallellalgoritmen för tbb :: parallell_for ( tbb :: blocked_range < size_t > ( 0 , SIZE ), // Lambdafunktion [ & myArray ]( const tbb :: blocked_range < size_t > & r ) { för ( storlek_t i = r . börjar (); i != r . slut (); i ++ ) Beräkna ( myArray [ i ]); }); returnera 0 ; }Den kommersiella versionen av TBB 4.0 stöder Microsoft Windows (XP eller högre), Mac OS X (version 10.5.8 eller högre) och Linux med olika kompilatorer ( Visual C++ (version 8.0 eller högre, endast på Windows), Intel C++-kompilator (version 11.1 eller senare) eller GNU Compiler Collection (gcc, version 3.4 och senare)). Dessutom har TBB open source-communityt porterat den till Sun Solaris , PowerPC , Xbox 360 , QNX Neutrino och FreeBSD .