Re: Параллельные алгоритмы
От: sergii.p  
Дата: 10.03.26 11:38
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>И возникает естественный вопрос: а оно вообще на многоядерном процессоре параллельно работает ?

LVV>Как-то у меня не получается ускорить стандартный последовательный алгоритм — время получается практически то же самое.

на msvc из коробки должно работать, на gcc/clang надо tbb подключать (-ltbb). Ну и проверять, что компилятор вообще это поддерживает https://en.cppreference.com/w/cpp/compiler_support/17.html#C.2B.2B17_library_features Хотя уже почти 10 лет прошло, пора бы и поддерживать.

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

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

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

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

например обернуть в лямбду
auto gen = [] {
    static mt19937_64 rng(rd());
    static std::mutex m;
    std::lock_guard<std::mutex> lock(m);
    return rng();
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.