Intel Threading építőelemek

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2016. augusztus 5-én felülvizsgált verziótól ; az ellenőrzésekhez 10 szerkesztés szükséges .
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 szerkezete

A könyvtár osztálysablonok és függvények gyűjteménye párhuzamos programozáshoz. A könyvtár rendelkezik:

Történelem

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.

Használati példák

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

Támogatott operációs rendszerek

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 .

Lásd még

Irodalom

Jegyzetek

  1. A oneTBB v2021.5.0 kiadása . Letöltve: 2022. június 7. Az eredetiből archiválva : 2022. június 7.
  2. Intel® TBB – ISN archiválva : 2009. március 2.

Linkek