Параллельные вычисления
Автор: Vinyl Scratch • Ноябрь 21, 2022 • Лабораторная работа • 7,045 Слов (29 Страниц) • 508 Просмотры
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Сибирский государственный университет науки и технологий
имени академика М.Ф. Решетнева»
Институт информатики и телекоммуникаций
Кафедра информатики и вычислительной техники
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ
Параллельные вычисления
Знакомство с OpenMP |
Руководитель А.Г. Зотин
подпись, дата инициалы, фамилия
Обучающийся БПИ 20-01, 201219002 В.Д. Антонов
номер группы, зачетной книжки подпись, дата инициалы, фамилия
Красноярск 2022 г.
ЦЕЛЬ РАБОТЫ
Получение практических навыков разработки простых параллельных программ с использованием OpenMP. Ознакомление с основными функциями и директивами OpenMP.
постановка задачи
- Реализовать консольное приложение с поддержкой OpenMP, содержащее функции (с разным стилем вывода на экран – через cout и printf), в которых создается Х потоков, каждый из которых выводит сообщение приветствия от потока, например «Hello World! От потока #». До запуска функций программа должна вывести сообщение, показывающее максимально доступное в системе количество потоков. Пользователь может задать значение числа Х, которое может превышать максимально доступное в системе количество потоков.
- Разработать консольное приложение, реализующее сложение векторов и подсчет суммы всех элементов итогового вектора. Для каждой реализации функций выполните расчет времени. Для всех действий необходимо реализовать функции в нескольких вариантах.
- Провести экспериментальное исследование по обработке данных с разными реализациями алгоритмов на сборке Release. При исследовании использовать одномерные массивы типа double размерностью от 100000 до 250000. В ходе исследования необходимо выяснить время выполнения отдельных функций и полное время решения задачи (три шага: заполнение массивов, сложение массивов и подсчет суммы всех элементов итогового массива). Рассчитать показатели эффективности для решения задачи.
ХОД работы
Реализована программа согласно заданию 1, код программы представлен ниже.
#include <omp.h>
#include <iostream>
using namespace std;
void cout_omp(){
cout << "Parallel cout:" << endl;
#pragma omp parallel
{
int i = omp_get_thread_num();
cout << "Hello world from thread " << i << endl;
}
cout << endl;
}
void printf_omp(){
cout << "Parallel printf:" << endl;
#pragma omp parallel
{
int i = omp_get_thread_num();
printf("Hello world from thread %d\n", i);
}
cout << endl;
}
int main()
{
omp_set_dynamic(0);
int n = omp_get_max_threads();
cout << "Threads available: " << n << endl;
cout << "Set threads as: ";
cin >> n;
cout << endl;
...