Intel Threading byggeklodser | |
---|---|
Type | bibliotek (programmering) |
Udvikler | Intel |
Skrevet i | C++ , Assembler |
Operativ system | Cross platform |
nyeste version | 2021.5.0 [1] (22. december 2021) |
Licens | To muligheder: kommerciel og Apache 2.0 |
Internet side | threadingbuildingblocks.org |
Intel Threading Building Blocks (også kendt som TBB ) er et cross-platform C++ skabelonbibliotek [2] udviklet af Intel til parallel programmering. Biblioteket indeholder algoritmer og datastrukturer, der gør det muligt for programmøren at undgå mange af de kompleksiteter, der følger med traditionelle threading-implementeringer såsom POSIX-tråde , Windows-tråde eller Boost-tråde , som skaber separate udførelsestråde, der synkroniseres og stoppes manuelt. TBB-biblioteket abstraherer adgang til individuelle tråde. Alle operationer behandles som "opgaver", der er dynamisk fordelt mellem processorkernerne. Desuden effektiv brugcache . Et program skrevet ved hjælp af TBB opretter, synkroniserer og løser opgaveafhængighedsgrafer i henhold til en algoritme. Opgaverne udføres derefter i henhold til afhængighederne. Denne tilgang giver dig mulighed for at programmere parallelle algoritmer på et højt niveau og abstrahere fra detaljerne i arkitekturen på en bestemt maskine.
Biblioteket er en samling af klasseskabeloner og funktioner til parallel programmering. Biblioteket har:
Version 1.0 blev frigivet af Intel den 29. august 2006, et år efter udgivelsen af sin første dual-core Pentium D-processor .
Version 1.1 blev frigivet den 10. april 2007. Den 5. juni blev biblioteket tilføjet til Intel C++ Compiler 10.0 Professional Edition.
Version 2.0 blev frigivet den 24. juli 2007. Bibliotekets kildekode blev åbnet, og et open source-projekt blev oprettet under GPLv2-licensen. Biblioteket er også tilgængeligt under en kommerciel licens uden kildekode, men med adgang til teknisk support. Funktionaliteten af begge biblioteker er den samme.
Version 2.1 blev frigivet den 22. juli 2008.
Version 2.2 blev frigivet den 5. august 2009 . Det inkluderer understøttelse af C++0x lambda-funktioner .
Version 3.0 blev udgivet den 4. maj 2010. Liste over forbedringer http://software.intel.com/en-us/blogs/2010/05/04/tbb-30-new-today-version-of-intel-threading-building-blocks/ .
Version 4.0 blev frigivet den 8. september 2011. Ny funktionalitet er tilføjet, se https://web.archive.org/web/20111213150434/http://threadingbuildingblocks.org/whatsnew.php
Fra og med version 3.0 udgives midlertidige TBB-opdateringer i formatet TBB X.0-opdatering N, for eksempel TBB 4.0-opdatering 2.
I dette program behandles array-elementerne parallelt af funktionen Calculate.
// Nødvendige header-filer er inkluderet #include “tbb/blocked_range.h” #include “tbb/parallel_for.h” // Antal vektorelementer const int SIZE = 10000000 ; // Håndterklasseklasse Beregningsopgave { vektor < double > & myArray ; offentligt : // Operator () udføres på et område fra iterationsrummet void - operatoren ()( const tbb :: blocked_range < int > & r ) const { for ( int i = r . begynde (); i != r . ende (); i ++ ) Beregn ( myArray [ i ]); } // CalculationTask constructor ( vektor < double > &a ) : myArray ( a ) { } }; int main () { vektor < double > myArray ( STØRRELSE ); // Kør parallelalgoritmen for tbb :: parallel_for ( tbb :: blocked_range < int > ( 0 , SIZE ), CalculationTask ( myArray )); returnere 0 ; }Brug af lambda-funktioner fra C++11:
// Nødvendige header-filer er inkluderet #include “tbb/blocked_range.h” #include “tbb/parallel_for.h” #inkluder <vektor> // Antal vektorelementer const size_t SIZE = 10000000 ; int main () { std :: vektor < dobbelt > myArray ( STØRRELSE ); // Kør parallelalgoritmen for tbb :: parallel_for ( tbb :: blokeret_område < størrelse_t > ( 0 , STØRRELSE ), // Lambda funktion [ & myArray ]( const tbb :: blocked_range < size_t > & r ) { for ( størrelse_t i = r . begynde (); i != r . slut (); i ++ ) Beregn ( myArray [ i ]); }); returnere 0 ; }Den kommercielle version af TBB 4.0 understøtter Microsoft Windows (XP eller højere), Mac OS X (version 10.5.8 eller nyere) og Linux ved hjælp af forskellige compilere ( Visual C++ (version 8.0 eller nyere, kun på Windows), Intel C++ compiler (version 11.1 eller nyere) eller GNU Compiler Collection (gcc, version 3.4 og nyere)). Derudover har TBB open source-fællesskabet overført det til Sun Solaris , PowerPC , Xbox 360 , QNX Neutrino og FreeBSD .