Re[2]: Параллельные алгоритмы
От: LaptevVV Россия  
Дата: 10.03.26 12:16
Оценка:
LVV>>И возникает естественный вопрос: а оно вообще на многоядерном процессоре параллельно работает ?
LVV>>Как-то у меня не получается ускорить стандартный последовательный алгоритм — время получается практически то же самое.
SP>на msvc из коробки должно работать, на gcc/clang надо tbb подключать (-ltbb). Ну и проверять, что компилятор вообще это поддерживает https://en.cppreference.com/w/cpp/compiler_support/17.html#C.2B.2B17_library_features Хотя уже почти 10 лет прошло, пора бы и поддерживать.
Это с какого бодуна подключать tbb ?
Посторонняя библиотека, к стандартной отношения не имеет...
Вот жеж блин!
Впрочем, в minGW все равно не работает...


LVV>>И еще вопрос: вот хотелось бы заполнить вектор из 500 000 000 элементов случайными числами параллельно.

LVV>>
generate(std::execution::par, v.begin(), v.end(), gen);

LVV>>Не возникнет ли здесь UB из-за ГСЧ ?
LVV>>Например, если
LVV>>
 mt19937_64 gen(rd());

LVV>>ведь внутренность ГСЧ явно не рассчитана на параллельное получение нескольких случайных чисел...

SP>например обернуть в лямбду

SP>
SP>auto gen = [] {
SP>    static mt19937_64 rng(rd());
SP>    static std::mutex m;
SP>    std::lock_guard<std::mutex> lock(m);
SP>    return rng();
SP>};
SP>

Спасибо.
С мутексом — те же последовательные яйца, только вид сбоку...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.