Распараллеливание цикла с помощью OpenMP

Рейтинг: 0Ответов: 0Опубликовано: 07.02.2023

Подскажите, #pragma omp parallel for в этом коде поможет ли ускорить производительность и не приведёт ли это к ошибкам? Правильно ли я понимаю что эта директива позволит рандомить элементы используя производительность нескольких ядер?

Код для генерации рандомного расположения элементов.

 #pragma omp parallel for
    for (int i=0; i<N; i++) {
        double f = (double)rand() / RAND_MAX;
        double random_x = r_min.x + f * (r_max.x - r_min.x);
        f = (double)rand() / RAND_MAX;
        double random_y = r_min.y + f * (r_max.y - r_min.y);
        
        #pragma omp critical
        cout << "Coordinates " << i+1 << " element: " << random_x << " " << random_y << "\n";
        
        element[i].x = random_x;
        element[i].y = random_y;
    }

Результат распараллеливания: введите сюда описание изображения

Почему не всегда работает cout вывода? введите сюда описание изображения

Ответы

Ответов пока нет.