Технология OpenMP


Задача 1: "Простая программа на OpenMP"

Входные данные: вводятся с клавиатуры

Выходные данные: выводятся на экран

Создайте параллельную область с количеством нитей заданным пользователем. Каждая нить должна вывести на экран свой номер. Кроме того, корневая нить должна вывести общее количество нитей.

Указания:

  1. Создайте проект в MS Visual Studio согласно инструкции.
  2. Для создания параллельной области воспользуйтесь директивой parallel.
  3. Чтобы узнать количество нитей в параллельной области, воспользуйтесь функцией omp_get_num_thread.
  4. Чтобы узнать номер нити в параллельной области, воспользуйтесь функцией omp_get_thread_num.
  5. Чтобы замерить время выполнения программы, вместо функции clock воспользуйтесь функцией omp_get_wtime.

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

Одно целое неотрицательное число

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

От каждой нити - строка "I'm thread <номер_нити>". От корневой нити - дополнительно строка "Number of threads <количество_нитей>".

Примеры входных и выходных данных

Входные данные Выходные данные
3 I'm thread 0
I'm thread 1
I'm thread 2
Number of threads 3

Задача 2: "Вычисление числа ПИ"

Входные данные: вводятся с клавиатуры

Выходные данные: выводятся на экран

Напишите параллельную версию программы, решающей задачу "Вычисление числа ПИ". Произведите замеры времени работы последовательной и параллельной версий программы.

Указания:

  1. Изучите последовательную программу "Вычисление числа ПИ"
  2. Для распараллеливания воспользуйтесь директивой for.
  3. Выберите наиболее подходящее значение параметра schedule директивы for.
  4. Изучите параметр приведения reduction. Используйте его в своей программе для суммирования частичных сумм, вычисленных каждой нитью.


Задача 3: "Магический квадрат"

Входные данные: вводятся с клавиатуры

Выходные данные: выводятся на экран

Напишите параллельную версию программы, решающей задачу "Магический квадрат" из лаборатороной работы 2 части 1. Произведите замеры времени работы последовательной и параллельной версий программы.

Указания:

  1. Для распараллеливания воспользуйтесь директивой sections.


Дополнительная задача 4: "Вычисление числа ПИ без параметра reduction"

Входные данные: вводятся с клавиатуры

Выходные данные: выводятся на экран

Перепишите без использования параметра приведения reduction свой программу, вычисляющую число ПИ.

Указания:

  1. При выполнении задания воспользуйтесь директивой critical.