Intel Threading építőelemek | |
---|---|
Típusú | könyvtár (programozás) |
Fejlesztő | Intel |
Beírva | C++ , Assembler |
Operációs rendszer | Cross platform |
legújabb verzió | 2021.5.0 [1] (2021. december 22.) |
Engedély | Két lehetőség: kereskedelmi és Apache 2.0 |
Weboldal | threadingbuildingblocks.org |
Az Intel Threading Building Blocks (más néven TBB ) egy többplatformos C++ sablonkönyvtár [2] , amelyet az Intel párhuzamos programozásra fejlesztett ki. A könyvtár olyan algoritmusokat és adatstruktúrákat tartalmaz, amelyek lehetővé teszik a programozó számára, hogy elkerülje a hagyományos szálkezelési megvalósításokkal, például a POSIX Threads , a Windows szálak vagy a Boost Threads , amelyek különálló végrehajtási szálakat hoznak létre, amelyeket szinkronizálnak és manuálisan leállítanak. A TBB könyvtár absztrahálja az egyes szálak elérését. Minden műveletet "feladatként" kezelünk, amelyek dinamikusan vannak elosztva a processzormagok között. Ezenkívül a gyorsítótár hatékony használata érhető el . A TBB-vel írt program egy algoritmus szerint hoz létre, szinkronizál és old fel feladatfüggőségi gráfokat. A feladatok ezután a függőségek szerint kerülnek végrehajtásra. Ez a megközelítés lehetővé teszi párhuzamos algoritmusok magas szintű programozását, elvonatkoztatva egy adott gép architektúrájának részleteitől.
A könyvtár osztálysablonok és függvények gyűjteménye párhuzamos programozáshoz. A könyvtár rendelkezik:
Az 1.0-s verziót az Intel 2006. augusztus 29-én adta ki, egy évvel az első kétmagos Pentium D processzor megjelenése után .
Az 1.1-es verzió 2007. április 10-én jelent meg. Június 5-én a könyvtár hozzáadásra került az Intel C++ Compiler 10.0 Professional Edition verziójához.
A 2.0-s verzió 2007. július 24-én jelent meg. Megnyitották a könyvtár forráskódját, és létrehoztak egy nyílt forráskódú projektet a GPLv2 licenc alatt. A könyvtár kereskedelmi licenc alatt is elérhető forráskód nélkül, de műszaki támogatási lehetőséggel. Mindkét könyvtár funkcionalitása megegyezik.
A 2.1-es verzió 2008. július 22-én jelent meg.
A 2.2-es verzió 2009. augusztus 5- én jelent meg . Támogatja a C++0x lambda funkciókat .
A 3.0-s verzió 2010. május 4-én jelent meg. A fejlesztések listája http://software.intel.com/en-us/blogs/2010/05/04/tbb-30-new-today-version-of-intel-threading-building-blocks/ .
A 4.0-s verzió 2011. szeptember 8-án jelent meg. Új funkciókat adtunk hozzá, lásd: https://web.archive.org/web/20111213150434/http://threadingbuildingblocks.org/whatsnew.php
A 3.0-s verziótól kezdődően a TBB ideiglenes frissítései a TBB X.0 frissítés N formátumban jelennek meg, például a TBB 4.0 2. frissítése.
Ebben a programban a tömbelemeket a Calculate függvény párhuzamosan dolgozza fel.
// A szükséges fejlécfájlok benne vannak #include "tbb/blocked_range.h" #include "tbb/parallel_for.h" // Vektorelemek száma const int SIZE = 10000000 ; // Handler osztály osztály CalculationTask { vektor < double > & myArray ; nyilvános : // A () operátor az iterációs tér egyik tartományán kerül végrehajtásra void operátor ()( const tbb :: blocked_range < int > & r ) const { for ( int i = r . kezdődik (); i != r . end (); i ++ ) Számítás ( myArray [ i ]); } // CalculationTask konstruktor ( vektor < double > &a ) : myArray ( a ) { } }; int main () { vektor < double > myArray ( SIZE ); // Futtassa a párhuzamos algoritmust a tbb :: parallel_for ( tbb :: blocked_range < int > ( 0 , SIZE ), CalculationTask ( myArray ) számára); return 0 ; }A lambda függvények használata a C++11-ből:
// A szükséges fejlécfájlokat tartalmazza #include "tbb/blocked_range.h" #include "tbb/parallel_for.h" #include <vektor> // Vektorelemek száma const size_t SIZE = 10000000 ; int main () { std :: vektor < double > myArray ( SIZE ); // Futtassa a párhuzamos algoritmust a következőhöz: tbb :: parallel_for ( tbb :: blocked_range < size_t > ( 0 , SIZE ), // Lambda függvény [ & myArray ]( const tbb :: blocked_range < size_t > & r ) { for ( méret_t i = r . kezdete (); i != r . vége (); i ++ ) Számítás ( myArray [ i ]); }); return 0 ; }A TBB 4.0 kereskedelmi verziója támogatja a Microsoft Windows (XP vagy újabb), a Mac OS X (10.5.8 vagy újabb verzió) és a Linux operációs rendszert különböző fordítók segítségével ( Visual C++ (8.0 vagy újabb verzió, csak Windowson), Intel C++ fordító (verzió ) 11.1 vagy újabb) vagy GNU Compiler Collection (gcc, 3.4 és újabb verzió)). Ezenkívül a TBB nyílt forráskódú közössége átvitte Sun Solarisra , PowerPC -re , Xbox 360 -ra , QNX Neutrino -ra és FreeBSD -re .