close

Bloki konstrukcyjne Intel Threading

Przejdź do nawigacji Przejdź do wyszukiwania
Bloki konstrukcyjne Intel Threading
komponent oneAPI
Informacje ogólne
typ programu Biblioteka
deweloper Intel
Licencja Podwójny: zastrzeżony i open source
Specyfikacja
Zaplanowano w C++
Wersje
Najnowsza stabilna wersja 4.0 (08.09.2011)
Spinki do mankietów

Intel Threading Building Blocks (Intel TBB) to oparta na szablonach biblioteka dla języka C++ opracowana przez firmę Intel w celu ułatwienia pisania programów wykorzystujących możliwości równoległości procesorów o architekturze wielordzeniowej .

Ta biblioteka zapewnia algorytmy i struktury danych, które pozwalają programiście częściowo uniknąć komplikacji związanych z używaniem natywnych pakietów zarządzania wątkami , w których tworzenie, synchronizacja i niszczenie wątków są jawne i zależne od systemu. Zamiast tego biblioteka abstrahuje dostęp do wielu procesorów, umożliwiając traktowanie operacji jako zadań, które są automatycznie i dynamicznie dzielone na dostępne procesory przez menedżera środowiska wykonawczego.

Takie podejście sprawia, że ​​Intel TBB jest zaliczany do rodziny rozwiązań do programowania równoległego, które umożliwiają oddzielenie programowania od szczególnych cech maszyny.

Historia

Pierwsza wersja tej biblioteki (wersja 1.0) została wydana przez firmę Intel 29 sierpnia 2006 roku, rok po wydaniu pierwszego wielordzeniowego procesora Intela o architekturze x86 , Pentium D. Wersja 1.1 została wydana 10 kwietnia 2007 r. W nowej wersji wprowadzono auto_partitionerautomatyczną alternatywę dla ręcznego określania idealnego rozmiaru ziarna do zrównoleglania zadań. W tym samym roku został dołączony do wersji 10.0 kompilatora Intel C++ Compiler Professional Edition . [ 1 ]

Wersja 2.0 została wydana 24 lipca 2007 roku. Ta wersja zawierała wydanie kodu źródłowego i utworzenie wspólnego projektu open source . [ 2 ] Kod jest wydany na licencji GPLv2 z licencją "runtime wyjątkowy" , taką samą licencją używaną przez implementację GCC Standard Library C++ . Jednak Intel TBB jest nadal dystrybuowany w komercyjnej wersji bez kodu źródłowego, który zapewnia wsparcie, ale nie dodaje dodatkowych funkcji.

Wersja 2.1 została opublikowana 22 lipca 2008 r., chociaż była kilkakrotnie aktualizowana. Oferuje nowe funkcje, takie jak koligacja wątku zadań, obsługa anulowania, obsługa wyjątków i przenośne adaptery wątków. Ostatnią opublikowaną aktualizacją tej wersji była aktualizacja 4 z dnia 22 kwietnia 2009 r.

Wdrożenie

Intel TBB wdraża kradzież zadań w celu zrównoważenia obciążenia dostępnymi rdzeniami przetwarzania w celu zwiększenia wykorzystania rdzeni i skalowalności programu. Początkowo obciążenie jest dzielone równomiernie między dostępne rdzenie przetwarzania. Jeśli jeden z nich zakończy pracę, podczas gdy inny nadal ma znaczne obciążenie kolejki zadań, menedżer zadań ponownie przypisuje część tej pracy do bezczynnego rdzenia. Ta dynamiczna możliwość realokacji oddziela programowanie od maszyny, umożliwiając aplikacjom napisanym przy użyciu tej biblioteki skalowanie w celu wykorzystania wszystkich dostępnych rdzeni przetwarzania bez żadnych zmian w kodzie źródłowym lub plikach wykonywalnych.

Intel TBB, idąc za przykładem STL , opiera się na wykorzystaniu szablonów, ponieważ oczekuje się, że polimorfizm w czasie kompilacji będzie bardziej wydajny niż tradycyjny polimorfizm w czasie wykonywania.


Spis treści

Intel TBB dostarcza m.in. następujący zbiór komponentów do programowania równoległego:

  • Podstawowe algorytmy: parallel_for, parallel_reduce, parallel_scan.
  • Zaawansowane algorytmy: parallel_while, parallel_do, pipeline, parallel_sort.
  • Kontenery: concurrent_queue, concurrent_vector, concurrent_hash_map.
  • Rezerwa pamięci: scalable_allocator, cache_aligned_allocator.
  • Wzajemne wykluczenie: mutex, spin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_mutex, recursive mutex.
  • Operacje atomowe: fetch_and_increment, fetch_and_decrement, fetch_and_add, compare_and_swap, fetch_and_store.
  • Czas potrzebny: tick_count.
  • Menedżer zadań: task.

Obsługiwane systemy

Intel TBB 2.1 w wersji komercyjnej jest obsługiwany na Microsoft Windows (XP lub nowszy), Mac OS X (wersja 10.4.4 lub nowsza) i Linux , wspierając kilka kompilatorów: Visual C++ (wersja 7.1 lub nowsza, tylko na Windows), Intel Kompilator C++ (wersja 9.0 lub nowsza) lub GCC . [ 3 ] Dodatkowo darmowa implementacja Intel TBB jest obsługiwana w Sun Solaris , [ 4 ] PowerPC , XBOX 360 , QNX Neutrino i FreeBSD .

Od września 2008 r. Intel TBB był dostępny jako pakiet dla następujących dystrybucji Linuksa:

Zobacz także

Referencje

Bibliografia


Linki zewnętrzne