Bloki konstrukcyjne wątków — Threading Building Blocks

Bloki konstrukcyjne wątków
Deweloper(zy) Intel
Wersja stabilna
2021,4 / 4 października 2021 ; 6 dni temu ( 2021-10-04 )
Magazyn
Napisane w C++
System operacyjny FreeBSD, Linux, Solaris, OS X, Windows, Android
Rodzaj biblioteka lub framework
Licencja podwójny: komercyjny / open source ( Apache 2.0 ), plus Freeware
Strona internetowa github .com /oneapi-src /oneTBB
intel .com /oneTBB

oneAPI Threading Building Blocks ( oneTBB ), dawniej Threading Building Blocks (TBB), to biblioteka szablonów C++ opracowana przez firmę Intel do programowania równoległego na procesorach wielordzeniowych . Używając TBB, obliczenia są dzielone na zadania, które mogą działać równolegle. Biblioteka zarządza i planuje wątki w celu wykonania tych zadań.

Przegląd

Program TBB tworzy, synchronizuje i niszczy grafy zadań zależnych zgodnie z algorytmami , tj. paradygmatami programowania równoległego wysokiego poziomu (aka Algorithmic Skeletons ). Zadania są następnie wykonywane z uwzględnieniem zależności grafowych. To podejście grupuje TBB w rodzinę technik programowania równoległego, których celem jest oddzielenie programowania od szczegółów podstawowej maszyny.

TBB wdraża kradzież pracy, aby zrównoważyć równoległe obciążenie między dostępnymi rdzeniami przetwarzania w celu zwiększenia wykorzystania rdzeni, a tym samym skalowania. Początkowo obciążenie jest równomiernie dzielone między dostępne rdzenie procesorów. Jeśli jeden rdzeń zakończy swoją pracę, podczas gdy inne rdzenie nadal mają znaczną ilość pracy w kolejce, TBB ponownie przypisuje część pracy z jednego z zajętych rdzeni do bezczynnego rdzenia. Ta dynamiczna zdolność oddziela programistę od maszyny, umożliwiając aplikacjom napisanym przy użyciu biblioteki skalowanie w celu wykorzystania dostępnych rdzeni przetwarzania bez zmian w kodzie źródłowym lub wykonywalnym pliku programu. W przeprowadzonej w 2008 r. ocenie implementacji kradnącej pracę w TBB, naukowcy z Princeton University stwierdzili, że jest ona nieoptymalna dla dużej liczby rdzeni procesorów, powodując do 47% czasu obliczeniowego poświęconego na planowanie kosztów podczas uruchamiania niektórych testów porównawczych w systemie 32-rdzeniowym .

TBB, podobnie jak STL (i oparta na nim część standardowej biblioteki C++), intensywnie wykorzystuje szablony. Ma to zaletę polimorfizmu o niskim nakładzie , ponieważ szablony są konstrukcją czasu kompilacji, którą współczesne kompilatory C++ mogą w dużej mierze zoptymalizować.

oneTBB jest dostępne komercyjnie jako dystrybucja binarna z obsługą oraz jako oprogramowanie typu open source zarówno w formie źródłowej, jak i binarnej.

TBB nie daje gwarancji determinizmu ani wolności od wyścigu danych .

Zawartość biblioteki

TBB to zbiór komponentów do programowania równoległego:

  • Podstawowe algorytmy: parallel_for, parallel_reduce,parallel_scan
  • Zaawansowane algorytmy: parallel_while, parallel_do, parallel_pipeline,parallel_sort
  • Kontenery : concurrent_queue, concurrent_priority_queue, concurrent_vector,concurrent_hash_map
  • Przydział pamięci: scalable_malloc, scalable_free, scalable_realloc, scalable_calloc, scalable_allocator,cache_aligned_allocator
  • Wzajemne wykluczenie : mutex, spin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_mutex,recursive_mutex
  • Operacje atomowe : fetch_and_add, fetch_and_increment, fetch_and_decrement, compare_and_swap,fetch_and_store
  • Rozrząd: przenośny drobnoziarnisty globalny znacznik czasu
  • Harmonogram zadań: bezpośredni dostęp do kontroli tworzenia i aktywacji zadań

Obsługiwane systemy

Komercyjna wersja 3.0 TBB obsługuje Windows (XP lub nowszy), OS X (wersja 10.5.8 lub nowsza) i Linux przy użyciu Visual C++ (wersja 8.0 lub nowsza, tylko w systemie Windows), kompilator Intel C++ (wersja 11.1 lub nowsza) lub Kolekcja kompilatorów GNU (gcc). Ponadto społeczność open source TBB udostępniła poprawki do systemów Solaris , PowerPC , Xbox 360 , QNX Neutrino i FreeBSD .

Zobacz też

Uwagi

Bibliografia

Zewnętrzne linki