Jump to content

Потоковые строительные блоки

Потоковые строительные блоки
Разработчик(и) Интел
Стабильная версия
2021,8 / 17 февраля 2023 г .; 17 месяцев назад ( 17.02.2023 ) [1]
Репозиторий
Написано в С++
Операционная система FreeBSD, Linux, Solaris, macOS, Windows, Android
Тип библиотека или фреймворк
Лицензия двойной: коммерческий/с открытым исходным кодом ( Apache 2.0 ), плюс бесплатное ПО. [2]
Веб-сайт github /oneapi-src /oneTBB
информация /oneTBB

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
  • Синхронизация: портативная мелкозернистая глобальная отметка времени.
  • Планировщик задач: прямой доступ для контроля создания и активации задач

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ «Выпуски Github для создания блоков oneAPI Threading» . Гитхаб .
  2. ^ «Бесплатные варианты поддержки Intel самостоятельно, без лицензионных отчислений» .
  3. ^ Контрерас, Жилберто; Мартоноси, Маргарет (2008). Характеристика и повышение производительности строительных блоков Intel Threading Building Blocks (PDF) . Международный симп. IEEE. по характеристике рабочей нагрузки.
  4. ^ https://software.intel.com/en-us/intel-tbb Домашняя страница коммерческой версии строительных блоков Intel Threading Building Blocks
  5. ^ Боккино-младший, Роберт Л.; Адве, Викрам С.; Адве, Сарита В.; Снир, Марк (2009). Параллельное программирование должно быть детерминированным по умолчанию . Семинар USENIX по актуальным темам параллелизма.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3815aa620ca078532a6bcae3ce978d42__1722096000
URL1:https://arc.ask3.ru/arc/aa/38/42/3815aa620ca078532a6bcae3ce978d42.html
Заголовок, (Title) документа по адресу, URL1:
Threading Building Blocks - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)