Здравствуйте, 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();
};