Почему создание вектора C++ в параллельном цикле for openMP приводит к его значительному замедлению?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему создание вектора C++ в параллельном цикле for openMP приводит к его значительному замедлению?

Сообщение Anonymous »

Я пытаюсь инициализировать std::vector внутри параллельного цикла for с использованием openMP, но это занимает значительно больше времени, чем даже последовательный цикл.
Вот пример того, что я пытаюсь:

Код: Выделить всё

#include 
#include 
#include 
#include 

int main()
{
auto start = std::chrono::high_resolution_clock::now();

//processor supports 24 threads
//#pragma omp parallel for
for (int i = 0; i < 24; ++i) {

for (int j = 0; j < 100; ++j) {
for (int k = 0; k < 100; ++k) {
for (int l = 0; l < 100; ++l) {
int result = i + j + k + l;

std::vector resultsOver200 = {};
if (result > 200) {
resultsOver200.push_back(result);
}
//do something else with result
}
}
}
}

auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration duration = end - start;

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79345152/why-does-creating-a-c-vector-in-an-openmp-parallel-for-loop-cause-it-to-slow-s[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»