Intel Threading Building Blocks

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 5 augusti 2016; kontroller kräver 10 redigeringar .
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.

Biblioteksstruktur

Biblioteket är en samling klassmallar och funktioner för parallell programmering. Biblioteket har:

Historik

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.

Användningsexempel

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 ; }

Operativsystem som stöds

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 .

Se även

Litteratur

Anteckningar

  1. Släpp oneTBB v2021.5.0 . Hämtad 7 juni 2022. Arkiverad från originalet 7 juni 2022.
  2. Intel® TBB - ISN Arkiverad 2 mars 2009.

Länkar