Bloki konstrukcyjne wątków — Threading Building Blocks
| Deweloper(zy) | Intel |
|---|---|
| Wersja stabilna | 2021,4 / 4 października 2021
|
| 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 intel |
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ż
- Podstawowy zestaw narzędzi Intel oneAPI
- Intel Integrated Performance Primitives (IPP)
- Biblioteka analizy danych Intel oneAPI (oneDAL)
- Biblioteka jądra matematycznego Intel oneAPI (oneMKL)
- Doradca firmy Intel
- Inspektor Intel
- Profiler Intel VTune
- Równoczesne kolekcje Intel (CnC)
- Szkielet algorytmiczny
- Równoległe obliczenia
- Lista bibliotek wielowątkowych C++
- Lista bibliotek szablonów C++
- Biblioteka wzorów równoległych
- Grand Central Dispatch (GCD)
Uwagi
Bibliografia
- Voss, Michael; Asenjo, Rafael; Reinders, James (2019), Pro TBB , Apress, doi : 10.1007/978-1-4842-4398-5 , ISBN 978-1-4842-4397-8, S2CID 195847637
- Reinders, James (lipiec 2007), Intel Threading Building Blocks: Wyposażenie C++ dla równoległości procesorów wielordzeniowych (red. Paperback), Sebastopol: O'Reilly Media, ISBN 978-0-596-51480-8
- Voss, M. (październik 2006), Demystify Scalable Parallelism with Intel Threading Building Blocks' Generic Parallel Algorithms
- Voss, M. (grudzień 2006), Włącz bezpieczny, skalowalny paralelizm dzięki kontenerom współbieżnym Intel Threading Building Blocks
- Hudson, Richard L.; Saha, Bratin; Adl-Tabatabai, Ali-Reza; Hertzberg, Benjamin C. (2006), "McRT-Malloc", Proceedings of 2006 międzynarodowego sympozjum na temat zarządzania pamięcią - ISMM '06 , s. 74-83, doi : 10.1145/1133956.1133967 , ISBN 978-1595932211, S2CID 9120368