Intel Threading byggeklodser

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 5. august 2016; checks kræver 10 redigeringer .
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.

Biblioteksstruktur

Biblioteket er en samling af klasseskabeloner og funktioner til parallel programmering. Biblioteket har:

Historie

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.

Eksempler på brug

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

Understøttede operativsystemer

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 .

Se også

Litteratur

Noter

  1. Frigiv oneTBB v2021.5.0 . Hentet 7. juni 2022. Arkiveret fra originalen 7. juni 2022.
  2. Intel® TBB - ISN Arkiveret 2. marts 2009.

Links