Uploaded by Farhod Meliev

1-Mavzu-ru

advertisement
ТЕМА:ОСНОВЫ ПАРАЛЛЕЛЬНОГО
ПРОГРАММИРОВАНИЯ
ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА
ПАРАЛЛЕЛИЗМ
ПАРАЛЛЕЛЬНЫЕ КОМПЬЮТЕРЫ
лекция
ПАРАЛЛЕЛЬНЫЙ АЛГОРИТМ
Алгоритм — это последовательность
шагов, которые принимают входные
данные от пользователя и после некоторых
вычислений выдают выходные данные.
Параллельный алгоритм — это алгоритм,
который может выполнять несколько
команд
одновременно
на
разных
устройствах
обработки,
а
затем
объединять все отдельные выходные
данные для получения окончательного
результата.
ПАРАЛЛЕЛЬНАЯ ОБРАБОТКА
Иногда нам нужно извлекать данные из похожих или
взаимосвязанных событий, которые происходят
одновременно.
Именно
здесь
нам
требуется
параллельная обработка, которая может разделить
сложную задачу и обработать ее несколькими
системами для быстрого вывода результатов.
Параллельная обработка необходима, когда задача
заключается в обработке огромного объема сложных
данных. Примеры включают в себя: доступ к большим
базам
данных,
тестирование
самолетов,
астрономические расчеты, атомная и ядерная физика,
биомедицинский анализ, экономическое планирование,
обработка
изображений,
робототехника,
прогнозирование погоды, веб-сервисы и т. д.
ПАРАЛЛЕЛИЗМ.
Параллелизм — это процесс обработки
нескольких
наборов
инструкций
одновременно. Это уменьшает общее
время вычислений. Параллелизм может
быть реализован с помощью параллельных
компьютеров, то есть компьютеров со
многими процессорами. Параллельные
компьютеры
требуют
параллельного
алгоритма, языков программирования,
компиляторов и операционной системы,
поддерживающей многозадачность.
ЧТО ТАКОЕ АЛГОРИТМ?
Алгоритм — это последовательность инструкций для
решения проблемы. При разработке алгоритма мы
должны учитывать архитектуру компьютера, на
котором будет выполняться алгоритм.
Согласно
архитектуре,
существует
два
типа
компьютеров —
• Последовательный компьютер
• Параллельный компьютер
ВИДЫ АЛГОРИТМОВ
В зависимости от архитектуры компьютеров, у нас есть
два типа алгоритмов —
Последовательный алгоритм — алгоритм, в котором
некоторые последовательные шаги инструкций
выполняются в хронологическом порядке для решения
проблемы.
Параллельный алгоритм. Задача делится на подзадачи
и выполняется параллельно для получения отдельных
выходных данных. Позже, эти отдельные выходы
объединяются, чтобы получить конечный желаемый
результат.
РАЗДЕЛЕНИЕ АЛГОРИТМОВ
Нелегко разделить большую проблему на
подзадачи . Подзадачи могут иметь зависимость
данных между ними. Поэтому процессоры
должны общаться друг с другом, чтобы решить
проблему.
Было обнаружено, что время, необходимое
процессорам для связи друг с другом, больше,
чем фактическое время обработки. Таким
образом,
при
разработке
параллельного
алгоритма необходимо учитывать правильную
загрузку ЦП, чтобы получить эффективный
алгоритм.
АНАЛИЗ АЛГОРИТМОВ
Анализ
алгоритма
помогает
нам
определить,
является
ли
алгоритм
полезным или нет. Как правило, алгоритм
анализируется на основе времени его
выполнения (сложность времени) и
количества
пространства
(сложность
пространства), которое ему требуется.
Поскольку
у
нас
есть
сложные
запоминающие устройства, доступные по
разумной цене, пространство для хранения
больше не является проблемой.
АНАЛИЗ ПАРАЛЛЕЛЬНОГО АЛГОРИТМА
Параллельные алгоритмы предназначены
для повышения скорости вычислений на
компьютере. Для анализа параллельного
алгоритма
мы
обычно
рассматриваем
следующие параметры:
• Сложность времени (время выполнения),
• Общее
количество
используемых
процессоров,
• Общая стоимость.
СЛОЖНОСТЬ ВРЕМЕНИ
Основной причиной разработки параллельных
алгоритмов было сокращение времени вычисления
алгоритма. Оценка времени выполнения алгоритма
чрезвычайно важна при анализе его эффективности.
Время выполнения измеряется на основе времени,
затраченного алгоритмом на решение проблемы.
Общее время выполнения рассчитывается с момента
начала выполнения алгоритма до момента его
остановки. Если все процессоры не запускают или не
завершают выполнение одновременно, то общее
время выполнения алгоритма — это момент, когда
первый процессор начал выполнение, до того
момента, когда последний процессор прекратил
выполнение.
СЛОЖНОСТЬ ИЛИ ЭФФЕКТИВНОСТЬ АЛГОРИТМА
Сложность или эффективность алгоритма — это
количество шагов, выполняемых алгоритмом
для
получения
желаемого
результата.
Асимптотический анализ проводится для
расчета сложности алгоритма при его
теоретическом анализе.
УСКОРЕНИЕ АЛГОРИТМА
Производительность параллельного алгоритма
определяется путем расчета его ускорения .
Ускорение определяется как отношение времени
выполнения
наихудшего
случая
самого
быстрого
известного
последовательного
алгоритма для конкретной задачи к времени
наихудшего случая выполнения параллельного
алгоритма.
ускорение =Время выполнения худшего случая
самой
быстрой
из
известных
последовательностей для конкретной задачи /
Время
выполнения
худшего
случая
параллельного алгоритма
ПРОЦЕСС ПАРАЛЛЕЛИЗАЦИИ
ОРГАНИЗАЦИЯ ПАРАЛЛЕЛЬНОСТИ
• Разделение на несколько процессов
• Созданием нескольких потоков
ОРГАНИЗАЦИЯ ПАРАЛЛЕЛЬНОСТИ
• Разделение на несколько
процессов
Первый
способ
параллелизации приложения
разделение
его
на
одновременно выполняемые
процессы
ОРГАНИЗАЦИЯ ПАРАЛЛЕЛЬНОСТИ
• Созданием
нескольких
потоков
Для
организации
параллелизма
можно
использовать
несколько
потоков в одном процессе.Где
каждый
поток
работает
независимо
от
других
потоков и может выполнять
разные последовательности
задач
Oqim 1
Taqsimlanadigan xotira
Oqim 2
ДЛЯ ЧЕГО НУЖНО ПАРАЛЛЕЛИЗМ
• Распределение обязонностей
• Повышение эффективности
КОГДА НЕ СТОИТ ПЕРЕХОДИТЬ НА ПАРАЛЛЕЛИЗАЦИЮ
• Если затраты на параллелизацию привосходят от
прибыли от параллелизации.
• Ожидаемый результат не точный и требует
многолетние затраты времени
ПРИМЕР
Простоя программа:
#include <iostream>
int main()
{
std::cout<<”Привет, это вывод простой строки\n”;
}
ПРИМЕР
Пример простой параллельной программы:
#include <iostream>
#include <thread>
void hello()
{
std::cout<<”Привет, параллельный мир\n”;
}
int main()
{
std::thread t(hello);
t.join();
}
Download