Заправка строительных блоков - Threading Building Blocks
Эта статья может чрезмерно полагаться на источники слишком тесно связан с предметом, потенциально препятствуя публикации статьи проверяемый и нейтральный.Январь 2016) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Разработчики) | Intel |
---|---|
Стабильный выпуск | Обновление 3 2020 г. / 10 июля 2020 г.[1] |
Репозиторий | |
Написано в | C ++ |
Операционная система | FreeBSD, Linux, Solaris, OS X, Windows, Android |
Тип | библиотека или же рамки |
Лицензия | двойной: коммерческий / с открытым исходным кодом (Apache 2.0 ), а также бесплатное ПО[2] |
Интернет сайт | 01 программного обеспечения github |
oneAPI Заправка строительных блоков (один ТББ) это C ++ шаблон библиотека разработан Intel за параллельное программирование на многоядерные процессоры. Используя TBB, вычисление разбивается на задачи которые могут работать параллельно. Библиотека управляет и графики потоки для выполнения этих задач.
Обзор
Программа TBB создает, синхронизирует и уничтожает графы зависимых задач в соответствии с алгоритмы, то есть парадигмы параллельного программирования высокого уровня (a.k.a. Алгоритмические скелеты ). Затем задачи выполняются с учетом зависимостей графа. Этот подход объединяет TBB в семейство методов параллельного программирования, направленных на отделение программирования от особенностей базовой машины.
TBB реализует работа воровство чтобы сбалансировать параллельную рабочую нагрузку между доступными ядрами обработки, чтобы увеличить использование ядра и, следовательно, масштабирование. Изначально рабочая нагрузка равномерно распределяется между доступными ядрами процессора. Если одно ядро завершает свою работу, в то время как другие ядра все еще имеют значительный объем работы в очереди, TBB переназначает часть работы с одного из занятых ядер на незанятое ядро. Эта динамическая возможность отделяет программиста от машины, позволяя приложениям, написанным с использованием библиотеки, масштабироваться для использования доступных ядер обработки без изменений исходного кода или исполняемого файла программы. В оценке реализации кражи работы в TBB в 2008 г. исследователи из Университет Принстона обнаружил, что это было неоптимальным для большого количества ядер процессоров, вызывая до 47% вычислительного времени, затрачиваемого на планирование накладных расходов при выполнении определенных тестов на 32-ядерной системе.[3]
TBB, как и STL (и часть стандартной библиотеки C ++ на его основе) широко использует шаблоны. Это имеет преимущество низких накладных расходов. полиморфизм, поскольку шаблоны являются конструкцией времени компиляции, которую современный C ++ компиляторы можно в значительной степени оптимизировать.
oneTBB коммерчески доступен в виде двоичного дистрибутива с поддержкой,[4] и, как программное обеспечение с открытым исходным кодом как в исходной, так и в двоичной форме.[5]
TBB не предоставляет гарантий детерминизм или свобода от гонки данных.[6]
Содержимое библиотеки
TBB - это набор компонентов для параллельного программирования:
- Основные алгоритмы:
parallel_for
,parallel_reduce
,parallel_scan
- Продвинутые алгоритмы:
параллельно_время
,parallel_do
,parallel_pipeline
,parallel_sort
- Контейнеры:
concurrent_queue
,concurrent_priority_queue
,concurrent_vector
,concurrent_hash_map
- Выделение памяти:
масштабируемый_маллок
,scaleable_free
,scaleable_realloc
,масштабируемый_каллок
,масштабируемый_аллокатор
,cache_aligned_allocator
- Взаимное исключение:
мьютекс
,spin_mutex
,queuing_mutex
,spin_rw_mutex
,queuing_rw_mutex
,recursive_mutex
- Атомарные операции:
fetch_and_add
,fetch_and_increment
,fetch_and_decrement
,compare_and_swap
,fetch_and_store
- Время: портативная мелкозернистая глобальная отметка времени
- Планировщик задач: прямой доступ для управления созданием и активацией задач
Поддерживаемые системы
Коммерческий выпуск TBB 3.0 поддерживает Windows (XP или новее), OS X (версия 10.5.8 или выше) и Linux с помощью Visual C ++ (версия 8.0 или выше, только в Windows), Компилятор Intel C ++ (версия 11.1 или выше) или Коллекция компиляторов GNU (gcc).[7] Кроме того, сообщество открытого исходного кода TBB внесло исправления для Солярис,[8] PowerPC, Xbox 360, QNX Neutrino, и FreeBSD.
Смотрите также
- Набор инструментов Intel oneAPI Base
- Intel Интегрированные примитивы производительности (IPP)
- Intel oneAPI Библиотека ускорения аналитики данных (DAAL)
- Intel oneAPI Математическая библиотека ядра (MKL)
- Советник Intel
- Инспектор Intel
- Intel VTune Profiler
- Коллекции Intel Concurrent (ЧПУ)
- Алгоритмический скелет
- Параллельные вычисления
- Список многопоточных библиотек C ++
- Список библиотек шаблонов C ++
- Библиотека параллельных шаблонов
- Grand Central Dispatch (НОД)
Примечания
- ^ «Intel® Threading Building Blocks, выпуски Github».
- ^ «Бесплатные варианты для Intel Parallel Studio XE, поддерживайте себя, бесплатно».
- ^ Контрерас, Жилберто; Мартоноси, Маргарет (2008). Описание и повышение производительности строительных блоков Intel Threading (PDF). IEEE Int'l Symp. по характеристике рабочей нагрузки.
- ^ https://software.intel.com/en-us/intel-tbb Домашняя страница коммерческой версии Intel Threading Building Blocks
- ^ https://01.org/tbb Домашняя страница проекта Threading Building Blocks с открытым исходным кодом
- ^ Боккино младший, Роберт Л .; Adve, Vikram S .; Adve, Sarita V .; Снир, Марк (2009). Параллельное программирование по умолчанию должно быть детерминированным. USENIX Мастер-класс по актуальным темам параллелизма.
- ^ «Строительные блоки Intel Threading - примечания к выпуску версии 3.0». Получено 2011-08-08.
- ^ «Использование резьбовых строительных блоков Intel (TBB) с Sun Studio Express». Получено 2008-05-08.
Рекомендации
- Восс, Майкл; Асенджо, Рафаэль; Рейндерс, Джеймс (2019), Pro TBB, Апресс, Дои:10.1007/978-1-4842-4398-5, ISBN 978-1-4842-4397-8
- Рейндерс, Джеймс (июль 2007 г.), Строительные блоки Intel Threading: оснащение C ++ для параллелизма многоядерных процессоров (Ред. В мягкой обложке), Севастополь: O'Reilly Media, ISBN 978-0-596-51480-8
- Восс, М. (октябрь 2006 г.), Демистификация масштабируемого параллелизма с помощью общих параллельных алгоритмов Intel Threading Building Blocks
- Восс, М. (декабрь 2006 г.), Обеспечьте безопасный масштабируемый параллелизм с параллельными контейнерами Intel Threading Building Blocks
- Хадсон, Ричард Л .; Саха, Братин; Адл-Табатабай, Али-Реза; Герцберг, Бенджамин С. (2006), «McRT-Malloc», Материалы международного симпозиума 2006 г. по управлению памятью - ISMM '06, стр. 74–83, Дои:10.1145/1133956.1133967, ISBN 978-1595932211