Сообщение Параллельные алгоритмы от 10.03.2026 11:08
Изменено 10.03.2026 11:09 LaptevVV
Параллельные алгоритмы
Как известно в С++17 добавили политику выполнения алгоритмов.
Написано, однако в книжке Уильямса, что это не требование, а рекомендация.
И возникает естественный вопрос: а оно вообще на многоядерном параллельно работает ?
Как-то у меня не получается ускорить стандартный последовательный алгоритм — время получается практически то же самое.
И еще вопрос: вот хотелось бы заполнить вектор из 500 000 000 элементов параллельно.
Не возникнет ли здесь UB из-за ГСЧ ?
Например, если
ведь внутренность ГСЧ явно не рассчитана на параллельное получение нескольких случайных чисел...
Что думаете ?
Написано, однако в книжке Уильямса, что это не требование, а рекомендация.
И возникает естественный вопрос: а оно вообще на многоядерном параллельно работает ?
Как-то у меня не получается ускорить стандартный последовательный алгоритм — время получается практически то же самое.
И еще вопрос: вот хотелось бы заполнить вектор из 500 000 000 элементов параллельно.
generate(std::execution::par, v.begin(), v.end(), gen);Не возникнет ли здесь UB из-за ГСЧ ?
Например, если
mt19937_64 gen(rd());ведь внутренность ГСЧ явно не рассчитана на параллельное получение нескольких случайных чисел...
Что думаете ?
Параллельные алгоритмы
Как известно в С++17 добавили политику выполнения алгоритмов.
Написано, однако в книжке Уильямса, что это не требование, а разрешение.
И возникает естественный вопрос: а оно вообще на многоядерном процессоре параллельно работает ?
Как-то у меня не получается ускорить стандартный последовательный алгоритм — время получается практически то же самое.
И еще вопрос: вот хотелось бы заполнить вектор из 500 000 000 элементов случайными числами параллельно.
Не возникнет ли здесь UB из-за ГСЧ ?
Например, если
ведь внутренность ГСЧ явно не рассчитана на параллельное получение нескольких случайных чисел...
Что думаете ?
Написано, однако в книжке Уильямса, что это не требование, а разрешение.
И возникает естественный вопрос: а оно вообще на многоядерном процессоре параллельно работает ?
Как-то у меня не получается ускорить стандартный последовательный алгоритм — время получается практически то же самое.
И еще вопрос: вот хотелось бы заполнить вектор из 500 000 000 элементов случайными числами параллельно.
generate(std::execution::par, v.begin(), v.end(), gen);Не возникнет ли здесь UB из-за ГСЧ ?
Например, если
mt19937_64 gen(rd());ведь внутренность ГСЧ явно не рассчитана на параллельное получение нескольких случайных чисел...
Что думаете ?