Построение блоков потоков - Википедия - Threading Building Blocks

Заправка строительных блоков
Разработчики)Intel
Стабильный выпуск
Обновление 3 2020 г. / 10 июля 2020 г.; 5 месяцев назад (2020-07-10)[1]
Репозиторий Отредактируйте это в Викиданных
Написано вC ++
Операционная системаFreeBSD, Linux, Solaris, OS X, Windows, Android
Типбиблиотека или же рамки
Лицензиядвойной: коммерческий / с открытым исходным кодом (Apache 2.0 ), а также бесплатное ПО[2]
Интернет сайт01.org/ tbb
программного обеспечения.intel.com/ en-us/ intel-tbb
github.com/ 01org/ tbb

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.

Смотрите также

Примечания

  1. ^ «Intel® Threading Building Blocks, выпуски Github».
  2. ^ «Бесплатные варианты для Intel Parallel Studio XE, поддерживайте себя, бесплатно».
  3. ^ Контрерас, Жилберто; Мартоноси, Маргарет (2008). Описание и повышение производительности строительных блоков Intel Threading (PDF). IEEE Int'l Symp. по характеристике рабочей нагрузки.
  4. ^ https://software.intel.com/en-us/intel-tbb Домашняя страница коммерческой версии Intel Threading Building Blocks
  5. ^ https://01.org/tbb Домашняя страница проекта Threading Building Blocks с открытым исходным кодом
  6. ^ Боккино младший, Роберт Л .; Adve, Vikram S .; Adve, Sarita V .; Снир, Марк (2009). Параллельное программирование по умолчанию должно быть детерминированным. USENIX Мастер-класс по актуальным темам параллелизма.
  7. ^ «Строительные блоки Intel Threading - примечания к выпуску версии 3.0». Получено 2011-08-08.
  8. ^ «Использование резьбовых строительных блоков Intel (TBB) с Sun Studio Express». Получено 2008-05-08.

Рекомендации

внешняя ссылка