Подтвердить что ты не робот

Каковы различия между Intel TBB и Microsoft PPL?

Я планирую начать "играть" с parallelism на основе задач для кросс-платформенного проекта. Я хотел использовать Intel Threading Building Blocks. Я начинаю с Windows и Visual Studio.

Поскольку я просто хочу прототип на данный момент, я думаю о "игре" только на окнах, а затем достаточно знаний для использования библиотеки на всех совместимых платформах.

Я узнал, что со времен VS2010 Microsoft предоставляет аналогичную библиотеку Parallel Processing Library, имеющую (почти) тот же интерфейс, что и Intel TBB.

Некоторые источники предлагают, в том числе блог команды TBB, что они создают его вместе и что он является той же библиотекой.

Однако он не очень явный, поскольку часто предполагал наличие незначительных различий между этими двумя библиотеками.

Итак, каковы эти различия, если таковые имеются?. Я должен начать напрямую с последнего стабильного ITBB или не рискует просто играть с Microsoft PPL в прототипах и использовать ITBB на кросс-платформенном "реальный" проект?

4b9b3361

Ответ 1

TBB является надмножеством PPL (как в VS2010), поэтому он предоставляет все PPL API plus его собственные API, которые не имеют PPL.

Обратите внимание, что namespace Concurrency в VS2010 также содержит API Concurrency Runtime (ConcRT, поверх которого построена PPL), асинхронные агенты и т.д. TBB не имеет большинства из них, хотя у него есть некоторые (например, critical_section). В качестве альтернативы асинхронным агентам последняя версия TBB показывает новый API потокового графа.

В теории, чтобы переключиться с PPL на TBB, вам просто нужно заменить путь от того места, где вы берете ppl.h(с TBB, заголовок входит в <tbbdir>/include/tbb/compat) и, конечно, ссылку на DLL TBB. Однако в этом случае вы будете ограничены API PPL. Чтобы использовать "дополнительный" TBB API, который не существует в PPL (например, parallel_pipeline, parallel_reduce, concurrent_priority_queue и др.), Вам нужно работать с TBB с самого начала.