Потоковые строительные блоки
Эта статья может чрезмерно полагаться на источники, слишком тесно связанные с предметом , что потенциально препятствует тому, чтобы статья была проверяемой и нейтральной . ( январь 2016 г. ) |
Разработчик(и) | Интел |
---|---|
Стабильная версия | 2021,8 / 17 февраля 2023 г [1] |
Репозиторий | |
Написано в | С++ |
Операционная система | FreeBSD, Linux, Solaris, macOS, Windows, Android |
Тип | библиотека или фреймворк |
Лицензия | двойной: коммерческий/с открытым исходным кодом ( Apache 2.0 ), плюс бесплатное ПО. [2] |
Веб-сайт | github информация |
oneAPI Threading Building Blocks (oneTBB; ранее Threading Building Blocks или TBB) — это C++, шаблонов библиотека разработанная Intel для параллельного программирования на многоядерных процессорах . При использовании TBB вычисления разбиваются на задачи , которые могут выполняться параллельно. Библиотека управляет и планирует потоки для выполнения этих задач.
Обзор
[ редактировать ]Программа oneTBB создает, синхронизирует и уничтожает графы зависимых задач в соответствии с алгоритмами , то есть парадигмами параллельного программирования высокого уровня (они же Алгоритмические Скелеты ). Затем задачи выполняются с учетом зависимостей графа. Этот подход объединяет TBB в семейство методов параллельного программирования, стремящихся отделить программирование от особенностей базовой машины.
oneTBB реализует перехват работы , чтобы сбалансировать параллельную рабочую нагрузку между доступными процессорными ядрами, чтобы повысить загрузку ядер и, следовательно, масштабирование. Изначально рабочая нагрузка равномерно распределяется между доступными ядрами процессора. Если одно ядро завершает свою работу, в то время как другие ядра все еще имеют значительный объем работы в своей очереди, oneTBB переназначает часть работы с одного из занятых ядер на простаивающее ядро. Эта динамическая возможность отделяет программиста от машины, позволяя приложениям, написанным с использованием библиотеки, масштабироваться для использования доступных процессорных ядер без изменений в исходном коде или исполняемом файле программы. В ходе оценки реализации кражи работы в TBB в 2008 году исследователи из Принстонского университета обнаружили, что она неоптимальна для большого количества ядер процессора, в результате чего до 47% вычислительного времени тратится на планирование накладных расходов при выполнении определенных тестов в 32-ядерной системе. . [3]
oneTBB, как и STL (и основанная на нем часть стандартной библиотеки C++), широко использует шаблоны. Преимуществом этого подхода является полиморфизм с низкими издержками , поскольку шаблоны представляют собой конструкции времени компиляции, которые современные компиляторы C++ могут в значительной степени оптимизировать.
oneTBB доступен на коммерческой основе в виде двоичного дистрибутива с поддержкой, [4] и как программное обеспечение с открытым исходным кодом как в исходной, так и в двоичной форме.
oneTBB не предоставляет гарантий детерминизма или свободы от гонок за данными . [5]
Содержимое библиотеки
[ редактировать ]oneTBB — это набор компонентов для параллельного программирования:
- Основные алгоритмы:
parallel_for
,parallel_reduce
,parallel_scan
- Расширенные алгоритмы:
parallel_pipeline
,parallel_sort
- Контейнеры :
concurrent_queue
,concurrent_priority_queue
,concurrent_vector
,concurrent_hash_map
,concurrent_unordered_map
,concurrent_unordered_set
,concurrent_map
,concurrent_set
- Распределение памяти:
scalable_malloc
,scalable_free
,scalable_realloc
,scalable_calloc
,scalable_allocator
,cache_aligned_allocator
- Взаимное исключение :
mutex
,spin_mutex
,queuing_mutex
,spin_rw_mutex
,queuing_rw_mutex
,recursive_mutex
- Синхронизация: портативная мелкозернистая глобальная отметка времени.
- Планировщик задач: прямой доступ для контроля создания и активации задач
См. также
[ редактировать ]- Базовый набор инструментов Intel oneAPI
- Intel Интегрированные примитивы производительности (IPP)
- Intel oneAPI Библиотека анализа данных (oneDAL)
- Intel oneAPI Библиотека математического ядра (oneMKL)
- Советник Intel
- Инспектор разведки
- Intel VTune Profiler
- Intel Concurrent Collections (CnC)
- Алгоритмический скелет
- Параллельные вычисления
- Список многопоточных библиотек C++
- Список библиотек шаблонов C++
- Библиотека параллельных шаблонов
- Центральная диспетчерская (GCD)
- Строительные блоки архитектуры программного обеспечения
Примечания
[ редактировать ]- ^ «Выпуски Github для создания блоков oneAPI Threading» . Гитхаб .
- ^ «Бесплатные варианты поддержки Intel самостоятельно, без лицензионных отчислений» .
- ^ Контрерас, Жилберто; Мартоноси, Маргарет (2008). Характеристика и повышение производительности строительных блоков Intel Threading Building Blocks (PDF) . Международный симп. IEEE. по характеристике рабочей нагрузки.
- ^ https://software.intel.com/en-us/intel-tbb Домашняя страница коммерческой версии строительных блоков Intel Threading Building Blocks
- ^ Боккино-младший, Роберт Л.; Адве, Викрам С.; Адве, Сарита В.; Снир, Марк (2009). Параллельное программирование должно быть детерминированным по умолчанию . Семинар USENIX по актуальным темам параллелизма.
Ссылки
[ редактировать ]- Восс, Майкл; Асенхо, Рафаэль; Рейндерс, Джеймс (2019), Pro TBB , Apress, номер документа : 10.1007/978-1-4842-4398-5 , ISBN 978-1-4842-4397-8 , S2CID 195847637
- Рейндерс, Джеймс (июль 2007 г.), Строительные блоки Intel Threading: оснащение C++ для параллелизма многоядерных процессоров (изд. в мягкой обложке), Севастополь: O'Reilly Media, ISBN 978-0-596-51480-8
- Восс, М. (октябрь 2006 г.), Демистифицируйте масштабируемый параллелизм с помощью общих параллельных алгоритмов Intel Threading Building Blocks , заархивировано из оригинала 05 февраля 2012 г. , получено 6 июня 2007 г.
- Восс, М. (декабрь 2006 г.), Включение безопасного, масштабируемого параллелизма с параллельными контейнерами строительных блоков Intel Threading Building Blocks , заархивировано из оригинала 05 февраля 2012 г. , получено 6 июня 2007 г.
- Хадсон, Ричард Л.; Саха, Братен; Адл-Табатабай, Али-Реза; Герцберг, Бенджамин К. (2006), «McRT-Malloc», Труды международного симпозиума 2006 г. по управлению памятью - ISMM '06 , стр. 74–83, doi : 10.1145/1133956.1133967 , ISBN 978-1595932211 , S2CID 9120368