Странная ссылка, вот правильная.
LVV>Кто-нить пользовался ?
Да, и прямо и опосредованно. Хорошая библиотека, ей уже много лет.
Есть и альтернативы, не менее популярные, например, taskflow.
Ну и с каждым стандартом всё ближе по функционалу подбирается openmp, но это намного, намного менее удобно.
Здравствуйте, LaptevVV, Вы писали:
LVV>Кто-нить пользовался ?
Нам, в своё время, пытались продать. Но сразу сказали, что наилучшие результаты будут с их компилятором и на их-же процах (очевидно).
У нас не было бюджета на смену компилятора (мы только что стабилизировались после перехода на 64 бит), да и проверяли альтернативы Интелу (хотя, вот уже и до сих пор с ними).
Сама библиотека в наших узких местах не помогла из-за специфики. У нас много огромных картинок, на которые натравливаются алгоритмы. Картинки приходят строго одна за одной, и результат обработки должен быть в той-же последовательности. Разделить память картинки по шинам в многопроцессорных системах невозможно, библиотека показала худший результат по сравнению с нашим доморощенным параллелизмом.
Естественно они нам сказали, что у нас архитектура не та, и делаем мы всё не правильно.
Спрсоили совета как это надо сделать — они развели руками, и подарили нам профайлер.
Здравствуйте, Nuzhny, Вы писали:
N>... N>Да, и прямо и опосредованно. Хорошая библиотека, ей уже много лет. N>Есть и альтернативы, не менее популярные, например, taskflow. N>Ну и с каждым стандартом всё ближе по функционалу подбирается openmp, но это намного, намного менее удобно.
Плюсую taskflow.
В интел всегда софтверная часть шла со скрипом, только с появлением itanium они стали серьёзно заниматься софтом. Ну и в нынешней ситуации они вряд ли будут что-либо активно развивать. Впрочем, tbb уже очень давно готов для продакшена.
Вообще где-то тут на форуме публиковали пропоузал о том, что в плюсах хотят унифицировать многопоточность — то есть сделать так, чтобы каждая либа не тянула за собой свою имплементацию тредпула. Увы, не слежу за этой темой, не знаю в каком оно статусе.
Для каждого примера из папки example есть проект для XCode, правда шестилетней давности. Интересно, они только на интеловских процессорах пойдут или на Силиконе тоже?
Здравствуйте, Hоmunculus, Вы писали:
H>Для каждого примера из папки example есть проект для XCode, правда шестилетней давности. Интересно, они только на интеловских процессорах пойдут или на Силиконе тоже?
Здравствуйте, LaptevVV, Вы писали:
LVV>Библиотека для параллельных вычислений.
LVV>Кто-нить пользовался ?
Знакомс. На корке клауда(likeof AWS) пользовался в проекте, где оказался я, основная фишка, почему он там оказался так фрилокнутых структурах данных (мапах, векторах, етц... )
Здравствуйте, ботаныч, Вы писали:
Б>Здравствуйте, LaptevVV, Вы писали:
LVV>>Библиотека для параллельных вычислений.
LVV>>Кто-нить пользовался ? Б> Знакомс. На корке клауда(likeof AWS) пользовался в проекте, где оказался я, основная фишка, почему он там оказался так фрилокнутых структурах данных (мапах, векторах, етц... )
т.е. lockfree containers etc...
П.С. не помню рассказывал нет, но попал я на проектик где индусы\китайцы каким-то макаром переманили одного из архов амазона (хранцуз-ф))) в свой клауд проект. Ну собсна там и пользовалась эта либа.
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, LaptevVV, Вы писали:
LVV>>Свободная: https://github.com/syncur/tbb
N>Странная ссылка, вот правильная.
LVV>>Кто-нить пользовался ?
N>Да, и прямо и опосредованно. Хорошая библиотека, ей уже много лет. N>Есть и альтернативы, не менее популярные, например, taskflow. N>Ну и с каждым стандартом всё ближе по функционалу подбирается openmp, но это намного, намного менее удобно.
opnenmp это совсем не сравнимо с tbb. Совсем другое, это из разряда std::prallel_foreach(begin, end, [](){ enum xz {x, z}; return x;}); просто в коде выглядит аля единый скоуп. tbb больше про
std::prallel_foreach(begin, end, [&map0, &map2](auto iter0, auto iter1){ replicate(iter0, iter1); );
в неблокирующих алгоритмах
Здравствуйте, ботаныч, Вы писали:
Б>opnenmp это совсем не сравнимо с tbb.
Не сравнимо по способу решения задач или по типу решаемых задач? По способу — согласен, но они оба предназначены для одного и того же, нет? Тем более, для openmp стандарты новые выходят, на месте не стоит.
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, ботаныч, Вы писали:
Б>>opnenmp это совсем не сравнимо с tbb.
N>Не сравнимо по способу решения задач или по типу решаемых задач? По способу — согласен, но они оба предназначены для одного и того же, нет? Тем более, для openmp стандарты новые выходят, на месте не стоит.
я где-то в 2020 раcпараллеливал один мат. алгоритм для автоматического дифaеренцирования (adjoint) c openmp. Openmp скорее расширение для компилятора, выделяется скоуп с помощью прагм, на параллельный или single thread, есть барьеры etc...
tbb, включает всевозможные мьютексы (рекурсивные, на объектах ядра), но в том проект, где я с этим работал основной момент был в lock free контейнерах. Этого я не помню в openmp, не пробовал иcпользовать стандартные атомики в openmp. скажем tbb для параллелизма полнее openmp, хотя #pragma omp parallel, #pragma omp for в чем-то проще. НЕт необходимости руками создавать пул потоков.