Bloki konstrukcyjne Intel Threading
| 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:
- Fedora z czerwonym kapeluszem
- Novell otwarty SUSE
- Kanoniczne Ubuntu
- Czerwona flaga
- turbolinux
- Debiana
Zobacz także
- programowanie równoległe
- Cilk
- Otwórz MP
- OmpSs
- Urok++
Referencje
- ^ „Nowe produkty Intel upraszczają i przyspieszają tworzenie oprogramowania dla procesorów wielordzeniowych” . Zarchiwizowane z oryginału 15 lipca 2009 . Źródło 23 kwietnia 2009 .
- ↑ Bloki konstrukcyjne wątku
- ↑ „Bloki konstrukcyjne Intel Threading — informacje o wersji w wersji 2.0” . s. 4-5. Zarchiwizowane z oryginału w dniu 19 lipca 2011 . Źródło 23 kwietnia 2009 .
- ^ „Korzystanie z wątkowych bloków konstrukcyjnych firmy Intel (TBB) w Sun Studio Express” . Źródło 23 kwietnia 2009 .
Bibliografia
- Reinders, James (lipiec 2007). Bloki konstrukcyjne Intel Threading: wyposażenie C++ dla równoległości procesorów wielordzeniowych . Sewastopol: O'Reilly Media. ISBN 978-0-596-51480-8 .
Linki zewnętrzne
- Strona w wersji komercyjnej ( niedziałający link dostępny w Archiwum Internetowym ; zobacz historię , pierwsza i ostatnia wersja ).
- Witryna projektu open source