Intel Threading Building Blocks

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 95.154.102.182 (обсуждение) в 07:39, 28 марта 2011 (Ссылки: http://software.intel.com/ru-ru/intel-tbb/ -> http://software.intel.com/ru-ru/articles/intel-tbb/). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
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;
}

См. также

Литература

Примечания

  1. Intel® TBB — ISN

Ссылки