Navlékání stavebních bloků - Threading Building Blocks - Wikipedia
![]() | tento článek se mohou příliš spoléhat na zdroje příliš úzce souvisí s tématem, což potenciálně brání tomu, aby článek byl ověřitelný a neutrální.Leden 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Vývojáři | Intel |
---|---|
Stabilní uvolnění | Aktualizace 2020 3 / 10. července 2020[1] |
Úložiště | ![]() |
Napsáno | C ++ |
Operační systém | FreeBSD, Linux, Solaris, OS X, Windows, Android |
Typ | knihovna nebo rámec |
Licence | duální: komerční / otevřený zdroj (Apache 2.0 ), plus freeware[2] |
webová stránka | 01 software github |
oneAPI Navlékání stavebních bloků (jeden TBB) je C ++ šablona knihovna vyvinutý uživatelem Intel pro paralelní programování na vícejádrové procesory. Pomocí TBB je výpočet rozdělen na úkoly které mohou běžet paralelně. Knihovna spravuje a plány vlákna k provedení těchto úkolů.
Přehled
Program TBB vytváří, synchronizuje a ničí grafy závislých úkolů podle algoritmy, tj. paradigmata paralelního programování na vysoké úrovni (a.k.a. Algoritmické kostry ). Úkoly jsou poté prováděny s ohledem na závislosti grafů. Tento přístup seskupuje TBB do rodiny technik pro paralelní programování, jejichž cílem je oddělení programování od údajů základního stroje.
TBB nářadí kradení prací vyvážit paralelní pracovní zátěž napříč dostupnými procesorovými jádry, aby se zvýšilo využití jádra a tím i škálování. Zpočátku je pracovní zátěž rovnoměrně rozdělena mezi dostupná jádra procesoru. Pokud jedno jádro dokončí svou práci, zatímco ostatní jádra mají ve své frontě stále značné množství práce, TBB znovu přiřadí část práce z jednoho z rušných jader do nečinného jádra. Tato dynamická schopnost odděluje programátor od stroje a umožňuje aplikacím napsaným pomocí knihovny škálovat, aby využily dostupná jádra zpracování beze změn zdrojového kódu nebo spustitelného programového souboru. Při hodnocení práce kradoucí implementaci v TBB z roku 2008 vědci z Univerzita Princeton zjistil, že to bylo neoptimální pro velký počet jader procesorů, což způsobilo až 47% výpočetního času stráveného plánováním režie při spouštění určitých měřítek na 32jádrovém systému.[3]
TBB, jako STL (a část standardní knihovny C ++ na ní založená) používá široce šablony. To má výhodu nízké režie polymorfismus, protože šablony jsou konstrukcí kompilace, kterou moderní C ++ překladače může do značné míry optimalizovat.
oneTBB je komerčně dostupný jako binární distribuce s podporou,[4] a jako open-source software ve zdrojové i binární formě.[5]
TBB neposkytuje záruky determinismus nebo svobodu od datové závody.[6]
Obsah knihovny
TBB je kolekce komponent pro paralelní programování:
- Základní algoritmy:
parallel_for
,parallel_reduce
,paralelní_skenování
- Pokročilé algoritmy:
paralelně
,paralelní_do
,parallel_pipeline
,paralelní_třídit
- Kontejnery:
concurrent_queue
,concurrent_priority_queue
,concurrent_vector
,concurrent_hash_map
- Přidělení paměti:
scalable_malloc
,scalable_free
,scalable_realloc
,scalable_calloc
,škálovatelný alokátor
,cache_aligned_allocator
- Vzájemné vyloučení:
mutex
,spin_mutex
,queuing_mutex
,spin_rw_mutex
,queuing_rw_mutex
,recursive_mutex
- Atomové operace:
načíst_a_přidat
,fetch_and_increment
,fetch_and_decrement
,porovnávat a vyměňovat
,fetch_and_store
- Načasování: přenosné jemnozrnné globální časové razítko
- Plánovač úloh: přímý přístup k řízení vytváření a aktivace úkolů
Podporované systémy
Komerční vydání TBB 3.0 podporuje Okna (XP nebo novější), OS X (verze 10.5.8 nebo vyšší) a Linux použitím Visual C ++ (verze 8.0 nebo vyšší, pouze v systému Windows), Překladač Intel C ++ (verze 11.1 nebo vyšší) nebo Sbírka překladačů GNU (gcc).[7] Komunita open source TBB navíc přispěla opravami pro Solaris,[8] PowerPC, Xbox 360, QNX Neutrino, a FreeBSD.
Viz také
- Intel oneAPI Base Toolkit
- Intel Integrované výkonnostní primitivy (IPP)
- Intel oneAPI Knihovna zrychlení analýzy dat (DEN)
- Intel oneAPI Knihovna matematických jader (MKL)
- Intel Advisor
- Inspektor Intel
- Intel VTune Profiler
- Souběžné sbírky Intel (CnC)
- Algoritmická kostra
- Paralelní výpočty
- Seznam vícevláknových knihoven C ++
- Seznam knihoven šablon C ++
- Knihovna paralelních vzorů
- Grand Central Dispatch (GCD)
Poznámky
- ^ „Zprávy Intel® Threading Building Blocks Github“.
- ^ „Žádné možnosti nákladů na Intel Parallel Studio XE, podpořte se, bez licenčních poplatků“.
- ^ Contreras, Gilberto; Martonosi, Margaret (2008). Charakterizace a zlepšení výkonu Intel Threading Building Blocks (PDF). Mezinárodní IEEE Symp. o charakterizaci pracovní zátěže.
- ^ https://software.intel.com/en-us/intel-tbb Domovská stránka komerčních verzí Intel Threading Building Blocks
- ^ https://01.org/tbb Závitování stavebních bloků Open Source Project Homepage
- ^ Bocchino Jr., Robert L .; Adve, Vikram S .; Adve, Sarita V .; Snir, Marc (2009). Paralelní programování musí být ve výchozím nastavení deterministické. USENIX Workshop o aktuálních tématech v paralelismu.
- ^ „Intel Threading Building Blocks - Release Notes Version 3.0“. Citováno 2011-08-08.
- ^ „Používání závitových stavebních bloků (TBB) Intel se Sun Studio Express“. Citováno 2008-05-08.
Reference
- Voss, Michael; Asenjo, Rafael; Reinders, James (2019), Pro TBB, Apress, doi:10.1007/978-1-4842-4398-5, ISBN 978-1-4842-4397-8
- Reinders, James (červenec 2007), Intel Threading Building Blocks: Outfitting C ++ for Multi-core Processor Parallelism (Paperback ed.), Sebastopol: O'Reilly Media, ISBN 978-0-596-51480-8
- Voss, M. (říjen 2006), Demystifikujte škálovatelný paralelismus s generickými paralelními algoritmy Intel Threading Building Blocks
- Voss, M. (prosinec 2006), Povolte bezpečnou, škálovatelnou paralelnost se souběžnými kontejnery Intel Threading Building Blocks
- Hudson, Richard L .; Saha, Bratin; Adl-Tabatabai, Ali-Reza; Hertzberg, Benjamin C. (2006), „McRT-Malloc“, Sborník příspěvků z mezinárodního sympozia 2006 o správě paměti - ISMM '06, str. 74–83, doi:10.1145/1133956.1133967, ISBN 978-1595932211
externí odkazy
- Oficiální webové stránky
- tbb na GitHub
- Oficiální webové stránky ve společnosti Intel