Страницу Назад
Поискать другие аналоги этой работы

550

Отказоустойчивые вычислительные системы. Лабораторные работы №1,2,3. Общий вариант.

ID: 214151
Дата закачки: 12 Ноября 2020
Продавец: Damovoy (Напишите, если есть вопросы)
    Посмотреть другие работы этого продавца

Тип работы: Работа Лабораторная
Сдано в учебном заведении: ДО СИБГУТИ

Описание:
Лабораторная работа 1
Цель лабораторной работы – знакомство с библиотекой OpenMP и получение первичных навыков параллельного программирования.
1. Создание приложения с применением OpenMP
1. Запустите Microsoft Visual Studio 2010.
2. Выбирите пункт в меню File -> New -> Project, или нажмите Ctrl+Shift+N
3. В окне New Project в раскрывающемся списке Visual C++ выбирите Win32. В подокне Templates установите Win32 Console Application. Введите имя (Name), например, example1, и место расположения (Location) проекта, например, С:\\My, и нажмите кнопку OK. См. Рис.1.
4. В открывшемся окне Win32 Application Wizard - example1 нажмите кнопку Next, и затем в Additional options поставьте галочку напротив Empty project. Нажмите кнопку Finish. См. Рис.2.
5. Теперь создадим файл с кодом нашего приложения. Выберите пункт в меню Project -> Add New Item..., или нажмите Ctrl+Shift+A. В категории Visual C++выбирите подкатегорию Code. В подокне Templates установите С++ File (.cpp). Введите имя файла с расширением .с, например, source.c, и нажмите кнопкуAdd. См. Рис.3.
6. В новом окне введите код на Си. Затем сохраните файл, выбрав пункт меню File -> Save source.c, или нажав Ctrl+S.
7. Для построения приложения выберите пункт меню Build -> Build Solution, или нажмите F7.
8. Для запуска приложения выберите пункт меню Debug -> Start Without Debugging, или нажмите Ctrl+F5.
2. Выполнение примеров.
В OpenMP реализован набор директив, которые позволяют управлять процессом создания нитей и их использованием в процессе параллельных вычислений
Базовая директива: - директива parallel – инициализирует, создает параллельную область, которая исполняется всеми нитями.
Директива parallel
Параллельная область инициализируется вызовом директивы parallel. В результате выполнения директивы порождается группа нитей. Нити в группе получают уникальный номер от 0 до OMP_NUM_THREADS-1, константа OMP_NUM_THREADS определяет количество нитей в группе. Во время выполнения параллельной области размер группы не может быть изменен. После завершения параллельной области выполняется неявная синхронизация и уничтожение порожденных нитей.
При выполнении параллельной области все нити исполняют один о тот же код, поэтому для распределения вычислений между нитями используются директивы (section, do, workshare) или логические условие на номер нити в группе.
Директива parallel – инициализирует параллельную область и создает группу из OMP_NUM_THREADS нитей.

ЛАБОРОТОРНАЯ №2. СОЗДАНИЕ ПАРАЛЛЕЛЬНЫХ ОБЛАСТЕЙ В OpenMP.

Цель лабораторной работы – рассмотреть Условия выполнения параллельных областей. Распределение выполняемой программой работы между главно нитью и остальными.
2.1.Обзор директив разделения задач
При запуске программы создается процесс и запускается одна нить приложения OpenMP. Первая нить называется главная, она существует на протяжении всего цикла работы программы, в литературе не редко главная нить называется нить-мастер (master thread) или основная нить. Программа выполняется главной нитью, как только главная нить обнаруживает директиву параллельной области, создается группа нитей для выполнения параллельных вычислений. После выполнения команд параллельной области группа нитей завершает свою работу, и управление переходит опять главной нити.
В OpenMP реализован набор директив, которые позволяют управлять процессом создания нитей и их использованием в процессе параллельных вычислений:
- директива parallel – инициализирует, создает параллельную область, которая исполняется всеми нитями;
- директива master – задает исполнения структурированного блока кода только мастер-нитью;
- директива single – задает исполнение структурированного блока кода только один раз (любой нитью).
Создание группы нитей параллельной области достаточно ресурсоемкая задача, поэтому если в параллельной программе требуется исполнение блока кода одной нитью или мастер-нитью, то эффективнее применять директивы single и master.

Директива parallel
Параллельная область инициализируется вызовом директивы parallel. В результате выполнения директивы порождается группа нитей.
Список доступных опций директивы parallel для языков Си.
Упражнения

1. Напишите программу вывода натурального числа в параллельной области всеми нитями; главной нитью; любой нитью.
2. Напишите программу суммирования ряда из n натуральных чисел. Если n<500 программа должна выполняться последовательно, если n=>500 программа должна выполняться параллельно (применение опции if директивы parallel).
3. В предыдущей программе замерите время суммирования ряда в параллельном и последовательном варианте. Сделайте вывод о том, при каком n параллельная программа будет выполняться эффективно?
4. Напишите программу скалярного произведения двух векторов. При инициализации параллельной области явно укажите количество используемых нитей 2 или 4.
5. Предыдущую программу измените так, чтобы вывод результата скалярного произведения произвела главная нить; первая, завершившая вычисления нить.
ЛАБОРАТОРНАЯ №3. ПАРАЛЛЕЛЬНЫЕ ЦИКЛЫ В OpenMP

3.1.Опции директивы parallel
Директива parallel – инициализирует параллельную область и создает группу из OMP_NUM_THREADS нитей. Определение и задание переменной OMP_NUM_THREADS будет дано в следующем параграфе.

Синтаксис оператора. Язык Си
#pragma omp parallel [опция[[,] опция]...]


Возможные опции:
­ if(условие) – выполнение параллельной области по условию. Вхождение в параллельную область осуществляется только при выполнении некоторого условия. Если условие не выполнено, то директива не срабатывает и продолжается обработка программы в прежнем режиме;
­ num_threads (целочисленное выражение) – явное задание количества нитей, которые будут выполнять параллельную область; по умолчанию выбирается последнее значение, установленное с помощью функции omp_set_num_threads(), или значение переменной OMP_NUM_THREADS;
­ reduction(оператор:список) – задаёт оператор и список общих переменных; для каждой переменной создаются локальные копии в каждой нити; локальные копии инициализируются соответственно типу оператора (для аддитивных операций – 0 или его аналоги, для мультипликативных операций – 1 или её аналоги); над локальными копиями переменных после выполнения всех операторов параллельной области выполняется заданный оператор; оператор это: для языка Си – +, *, -, &, |, ^, &&, ||, для языка Фортран – +, *, -, .and., .or., .eqv., .neqv., max, min, iand, ior, ieor; порядок выполнения операторов не определён, поэтому результат может отличаться от запуска к запуску.

Опции, описанные в предыдущей лабораторной:
­ default(private|firstprivate|shared|none);
­ private(список);
­ firstprivate(список);
­ shared(список);
­ copyin(список).

При входе в параллельную область порождаются новые OMP_NUM_THREADS-1 нитей, каждая нить получает свой уникальный номер, причём порождающая нить получает номер 0 и становится основной нитью группы («мастером»).



Комментарии: Зачет без замечаний

Размер файла: 5,3 Мбайт
Фаил: Упакованные файлы (.rar)
-------------------
Обратите внимание, что преподаватели часто переставляют варианты и меняют исходные данные!
Если вы хотите, чтобы работа точно соответствовала, смотрите исходные данные. Если их нет, обратитесь к продавцу или к нам в тех. поддержку.
Имейте ввиду, что согласно гарантии возврата средств, мы не возвращаем деньги если вариант окажется не тот.
-------------------

   Скачать

   Добавить в корзину


    Скачано: 4         Коментариев: 0


Есть вопросы? Посмотри часто задаваемые вопросы и ответы на них.
Опять не то? Мы можем помочь сделать!

Некоторые похожие работы:

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

Не можешь найти то что нужно? Мы можем помочь сделать! 

От 350 руб. за реферат, низкие цены. Просто заполни форму и всё.

Спеши, предложение ограничено !



Что бы написать комментарий, вам надо войти в аккаунт, либо зарегистрироваться.

Страницу Назад

  Cодержание / Отказоустойчивые вычислительные системы / Отказоустойчивые вычислительные системы. Лабораторные работы №1,2,3. Общий вариант.
Вход в аккаунт:
Войти

Забыли ваш пароль?

Вы еще не зарегистрированы?

Создать новый Аккаунт


Способы оплаты:
UnionPay СБР Ю-Money qiwi Payeer Крипто-валюты Крипто-валюты


И еще более 50 способов оплаты...
Гарантии возврата денег

Как скачать и покупать?

Как скачивать и покупать в картинках


Сайт помощи студентам, без посредников!