Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

oneAPI Threading Building Blocks ( oneTBB ) является C ++ шаблон библиотека , разработанная Intel для параллельного программирования на базе многоядерных процессоров . Используя TBB, вычисление разбивается на задачи, которые могут выполняться параллельно. Библиотека управляет потоками и планирует их выполнение для выполнения этих задач.

Обзор [ править ]

Программа TBB создает, синхронизирует и уничтожает графы зависимых задач в соответствии с алгоритмами , то есть парадигмами параллельного программирования высокого уровня (также известными как « Алгоритмические скелеты» ). Затем задачи выполняются с учетом зависимостей графа. Этот подход объединяет TBB в семейство методов параллельного программирования, направленных на отделение программирования от деталей базовой машины.

TBB реализует кражу работы, чтобы сбалансировать параллельную рабочую нагрузку по доступным ядрам обработки, чтобы увеличить использование ядра и, следовательно, масштабирование. Изначально рабочая нагрузка равномерно распределяется между доступными ядрами процессора. Если одно ядро ​​завершает свою работу, в то время как другие ядра все еще имеют значительный объем работы в очереди, TBB переназначает часть работы с одного из занятых ядер на незанятое ядро. Эта динамическая возможность отделяет программиста от машины, позволяя приложениям, написанным с использованием библиотеки, масштабироваться для использования доступных ядер обработки без изменений исходного кода или исполняемого файла программы. В оценке внедрения work stealing в TBB в 2008 г. исследователи из Принстонского университетаобнаружил, что это было неоптимальным для большого количества ядер процессоров, из-за чего до 47% вычислительного времени тратится на планирование накладных расходов при выполнении определенных тестов на 32-ядерной системе. [3]

TBB, как и STL (и основанная на нем часть стандартной библиотеки C ++), широко использует шаблоны. Это дает преимущество полиморфизма с низкими накладными расходами , поскольку шаблоны представляют собой конструкцию времени компиляции, которую современные компиляторы C ++ могут в значительной степени оптимизировать.

oneTBB коммерчески доступен как двоичный дистрибутив с поддержкой [4], а также как программное обеспечение с открытым исходным кодом как в исходной, так и в двоичной форме. [5]

TBB не дает гарантий детерминизма или свободы от гонок данных . [6]

Содержимое библиотеки [ править ]

TBB - это набор компонентов для параллельного программирования:

  • Основные алгоритмы: parallel_for, parallel_reduce,parallel_scan
  • Усовершенствованные алгоритмы: parallel_while, parallel_do, parallel_pipeline,parallel_sort
  • Контейнеры : concurrent_queue, concurrent_priority_queue, concurrent_vector,concurrent_hash_map
  • Распределение памяти: 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
  • Атомарные операции : 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 ++ Compiler (версия 11.1 или новее) или Коллекция компиляторов GNU (gcc). [7] Кроме того, сообщество разработчиков открытого исходного кода TBB внесло исправления для Solaris , [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 (CnC)
  • Алгоритмический скелет
  • Параллельные вычисления
  • Список многопоточных библиотек C ++
  • Список библиотек шаблонов C ++
  • Библиотека параллельных шаблонов
  • Grand Central Dispatch (GCD)

Заметки [ править ]

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

Ссылки [ править ]

  • Восс, Майкл; Асенджо, Рафаэль; Рейндерс, Джеймс (2019), Pro TBB , Apress, doi : 10.1007 / 978-1-4842-4398-5 , ISBN 978-1-4842-4397-8, S2CID  195847637
  • Рейндерс, Джеймс (июль 2007 г.), Intel Threading Building Blocks: Outfitting C ++ for Multi-Core Processor Parallelism (издание в мягкой обложке), Севастополь: O'Reilly Media, ISBN 978-0-596-51480-8
  • Восс, М. (октябрь 2006 г.), Разоблачение масштабируемого параллелизма с помощью общих параллельных алгоритмов Intel Threading Building Blocks
  • Восс, М. (декабрь 2006 г.), Обеспечение безопасного масштабируемого параллелизма с помощью параллельных контейнеров Intel Threading Building Blocks
  • Хадсон, Ричард Л .; Саха, Братин; Адл-Табатабай, Али-Реза; Герцберг, Benjamin C. (2006), "MCRT-Malloc", Труды международного симпозиума 2006 года по управлению памятью - ISMM '06 , стр 74-83,. DOI : 10.1145 / 1133956.1133967 , ISBN 978-1595932211, S2CID  9120368

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • tbb на GitHub
  • Официальный сайт Intel