Дерективы section и sections в openMP c++

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

Решаю следующую задачу:

Изучите OpenMP-директивы создания параллельных секций sections и section. Напишите программу, содержащую 3 параллельные секции, внутри каждой из которых должно выводиться сообщение: [<Номер нити>]: came in section <Номер секции> Вне секций внутри параллельной области должно выводиться следующее сообщение: [<Номер нити>]: parallel region Запустите приложение на 2-х, 3-х, 4-х нитях. Проследите, как нити распределяются по параллельным секциям. Входные данные: k – количество нитей в параллельной области. Выходные данные: k-строк вида «[<Номер нити>]: came in section <Номер секции>», k-строк вида «[<Номер нити>]: parallel region». Пример входных и выходных данных

Входные данные:

  • 3

Выходные данные:

  • [0]: came in section 1
  • [1]: came in section 2
  • [2]: came in section 3
  • [0]: parallel region
  • [1]: parallel region
  • [2]: parallel region

Я не совсем понимаю как правильно реализовать следующую часть задачи

Вне секций внутри параллельной области должно выводиться следующее сообщение: [<Номер нити>]: parallel region

Пробовала вставлять вывод строки после 3х секций, но получаю ошибку. Подскажите, пожалуйста, где небходимо организовать вывод. Мой код:

#include <iostream>
#include <omp.h>
using namespace std;
int main(int argc, char *argv[]) {
    int k;
    cin >> k;
    omp_set_num_threads(k);
#pragma omp parallel sections
    {
#pragma omp section
        {
            cout << "[" << omp_get_thread_num() << "]: came in section 1" << endl;
        }
#pragma omp section
        {
            cout << "[" << omp_get_thread_num() << "]: came in section 2" << endl;
        }
#pragma omp section
        {
            cout << "[" << omp_get_thread_num() << "]: came in section 3" << endl;
        }
        //cout << "[" << omp_get_thread_num() << "]: parallel region";
    }
}

Ответы

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