Blocuri de construcție Intel Threading

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 5 august 2016; verificările necesită 10 modificări .
Blocuri de construcție Intel Threading
Tip de biblioteca (programare)
Dezvoltator Intel
Scris in C++ , Asamblator
Sistem de operare Platformă transversală
ultima versiune 2021.5.0 [1] (22 decembrie 2021)
Licență Două opțiuni: comercial și Apache 2.0
Site-ul web threadingbuildingblocks.org

Intel Threading Building Blocks (cunoscut și ca TBB ) este o bibliotecă de șabloane C++ multiplatformă [2] dezvoltată de Intel pentru programare paralelă. Biblioteca conține algoritmi și structuri de date care permit programatorului să evite multe dintre complexitățile care vin cu implementările tradiționale de threading, cum ar fi firele POSIX , firele Windows sau firele Boost , care creează fire separate de execuție care sunt sincronizate și oprite manual. Biblioteca TBB rezuma accesul la firele individuale. Toate operațiunile sunt tratate ca „sarcini” care sunt distribuite dinamic între nucleele procesorului. În plus, se realizează utilizarea eficientă a memoriei cache . Un program scris folosind TBB creează, sincronizează și rezolvă grafice de dependență de sarcini conform unui algoritm. Sarcinile sunt apoi executate în funcție de dependențe. Această abordare vă permite să programați algoritmi paraleli la un nivel înalt, făcând abstracție de la detaliile arhitecturii unei anumite mașini.

Structura bibliotecii

Biblioteca este o colecție de șabloane de clasă și funcții pentru programare paralelă. Biblioteca are:

Istorie

Versiunea 1.0 a fost lansată de Intel pe 29 august 2006, la un an după lansarea primului său procesor Pentium D dual-core .

Versiunea 1.1 a fost lansată pe 10 aprilie 2007. Pe 5 iunie, biblioteca a fost adăugată la Intel C++ Compiler 10.0 Professional Edition.

Versiunea 2.0 a fost lansată pe 24 iulie 2007. Codul sursă al bibliotecii a fost deschis și un proiect open source a fost creat sub licența GPLv2. Biblioteca este disponibilă și sub o licență comercială fără cod sursă, dar cu acces la suport tehnic. Funcționalitatea ambelor biblioteci este aceeași.

Versiunea 2.1 a fost lansată pe 22 iulie 2008.

Versiunea 2.2 a fost lansată pe 5 august 2009 . Include suport pentru funcțiile lambda C++0x .

Versiunea 3.0 a fost lansată pe 4 mai 2010. Lista de îmbunătățiri http://software.intel.com/en-us/blogs/2010/05/04/tbb-30-new-today-version-of-intel-threading-building-blocks/ .

Versiunea 4.0 a fost lansată pe 8 septembrie 2011. A fost adăugată o nouă funcționalitate, consultați https://web.archive.org/web/20111213150434/http://threadingbuildingblocks.org/whatsnew.php

Începând cu versiunea 3.0, actualizările intermediare TBB sunt lansate în formatul TBB X.0 update N, de exemplu TBB 4.0 update 2.

Exemple de utilizare

În acest program, elementele matricei sunt procesate de funcția Calculate în paralel.

// Fișierele de antet necesare sunt incluse #include „tbb/blocked_range.h” #include „tbb/parallel_for.h” // Numărul de elemente vectoriale const int SIZE = 10000000 ; // Clasa de gestionare a clasei CalculationTask { vector < double > & myArray ; public : // Operatorul () este executat pe un interval din spațiul de iterație operator void ()( const tbb :: blocked_range < int > & r ) const { pentru ( int i = r . begin (); i != r . end (); i ++ ) Calculați ( myArray [ i ]); } // Constructor CalculationTask ( vector < dublu > &a ) : myArray ( a ) { } }; int main () { vector < double > myArray ( SIZE ); // Rulați algoritmul paralel pentru tbb :: parallel_for ( tbb :: blocked_range < int > ( 0 , SIZE ), CalculationTask ( myArray )); returnează 0 ; }

Folosind funcții lambda din C++11:

// Fișierele de antet necesare sunt incluse #include „tbb/blocked_range.h” #include „tbb/parallel_for.h” #include <vector> // Numărul de elemente vectoriale const size_t SIZE = 10000000 ; int main () { std :: vector < double > myArray ( SIZE ); // Rulați algoritmul paralel pentru tbb :: parallel_for ( tbb :: blocked_range < size_t > ( 0 , SIZE ), // Funcția Lambda [ & myArray ]( const tbb :: blocked_range < size_t > & r ) { pentru ( size_t i = r . begin (); i != r . end (); i ++ ) Calculați ( myArray [ i ]); }); returnează 0 ; }

Sisteme de operare acceptate

Versiunea comercială a TBB 4.0 acceptă Microsoft Windows (XP sau o versiune ulterioară), Mac OS X (versiunea 10.5.8 sau o versiune ulterioară) și Linux folosind diferite compilatoare ( Visual C++ (versiunea 8.0 sau mai mare, numai pe Windows), compilatorul Intel C++ (versiunea 11.1 sau mai recent) sau GNU Compiler Collection (gcc, versiunea 3.4 și mai recentă)). În plus, comunitatea TBB open source l-a portat la Sun Solaris , PowerPC , Xbox 360 , QNX Neutrino și FreeBSD .

Vezi și

Literatură

Note

  1. Lansați oneTBB v2021.5.0 . Consultat la 7 iunie 2022. Arhivat din original pe 7 iunie 2022.
  2. Intel® TBB - ISN Arhivat 2 martie 2009.

Link -uri