Intel Threading Building Blocks
Intel Threading Building Blocks | |
---|---|
Тип | библиотека (программирование) |
Разработчик | Intel |
Написана на | С++ |
Операционная система | Кроссплатформенный |
Последняя версия | 2.2 (05.08.2009) |
Репозиторий | github.com/oneapi-src/on… |
Лицензия | GPL 2.0 |
Сайт | threadingbuildingblocks.org |
Intel Threading Building Blocks (также известная как TBB) — кроссплатформенная библиотека для параллельного программирования, реализованная на языке С++[1].
Структура библиотеки
Библиотека является коллекцией шаблонов классов и функций для параллельного программирования. В библиотеке реализованы:
- параллельные алгоритмы: for, reduce, do, scan, while, pipeline, sort;
- потокобезопасные контейнеры: вектор, очередь, хеш-таблица;
- масштабируемые распределители памяти;
- мьютексы;
- атомарные операции;
- глобальная временная метка;
- планировщик задач.
История
Версия 1.0 была выпущена фирмой Интел 29 августа 2006, через год после выпуска своего первого двуядерного процессора Pentium D.
Версия 1.1 была выпущена 10 апреля 2007. 5 июня библиотека была добавлена в состав Intel C++ Compiler 10.0 Professional Edition.
Версия 2.0 была выпущена 24 июля 2007. Был открыт исходный код библиотеки и был создан проект с открытым исходным кодом с лицензией GPLv2. Библиотека также доступна под коммерческой лицензией без исходного кода, но с доступом к технической поддержке. Функциональность обеих библиотек одинакова.
Версия 2.1 была выпущена 22 июля 2008.
Версия 2.2 была выпущена 5 августа 2009 года. Она включает в себя поддержку для лямбда-функций C++0x.
Примеры использования
В этой программе элементы массива обрабатываются функцией Calculate параллельно.
// Подключаются необходимые загловочные файлы
#include “tbb/blocked_range.h”
#include “tbb/parallel_for.h”
#include “tbb/task_scheduler_init.h”
using namespace tbb;
// Количество элементов вектора
const int SIZE = 10000000;
// Класс-обработчик
class CalculationTask
{
private:
double *myArray;
public:
// Оператор () выполняется над диапазоном из пространства итераций
void operator()(const blocked_range<int> &r) const
{
for (int i = r.begin(); i != r.end(); i++)
Calculate(myArray[i]);
}
// Конструктор
CalculationTask (double *a) : myArray(a) { }
};
int main()
{
double *myArray = new double[SIZE];
// Инициализация библиотеки TBB
task_scheduler_init init;
// Запуск параллельного алгоритма for
parallel_for(
blocked_range<int>(0, SIZE, 500),
CalculationTask(myArray));
return 0;
}
См. также
Литература
- Reinders, James (2007, July). Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism (Paperback) Sebastopol: O'Reilly Media, ISBN 978-0-596-51480-8.
Примечания
Ссылки
- http://www.threadingbuildingblocks.org — сайт сообщества.
- http://software.intel.com/ru-ru/intel-tbb/ — описание библиотеки на русском сайте Интела.
Это заготовка статьи об информационных технологиях и вычислительной технике. Помогите Википедии, дополнив её. |