Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка третья по MATLAB

.pdf
Скачиваний:
181
Добавлен:
19.03.2015
Размер:
1.28 Mб
Скачать

Белорусский государственный университет Механико­математический факультет

Кафедра численных методов и программирования

Курсовая работа

Параллельные вычисления в MATLAB

Выполнила Кульгавая Елена Александровна, студентка 3 курса 2 группы, специальность Web­программирование и Internet­технологии Научный руководитель Профессор Волков Василий Михайлович

Минск, 2010

2

Содержание

1. Введение ……………………………………………………………………… 3

Параллельные вычисления ……………………………………………... 3

Математическая основа параллельных вычислений…………………..4

2.Основная часть……………………………………………………………….. 5

2.1.Среда MATLAB………………………………………………………….. 5

Для чего нужен параллельный MATLAB……………………………….5

Почему именно MATLAB………………………………………………..7

2.2.Parallel Computing Toolbox……………………………………………….8

Главные свойства…………………………………………………………8

2.3.Разработка параллельных приложений в MATLAB…………………..10

Параллельный цикл……………………………………………………...10

Пример параллельного цикла for……………………………………….11

2.4.Цикл parfor……………………………………………………………….13

Когда использовать parfor……………………………………………....13

Создание цикла parfor …………………………………………………..13

Различия между циклами for и parfor…………………………………..14

2.5.Параллельные вычисления с pmode……………………………………16

Принцип работы…………………………………………………………16

Запуск pmode ……………………………………………………………16

2.6.Список функций параллельного MATLAB……………………………19

2.7.Примеры программирования параллельных задач……………………20

3

Вычисление определенного интеграла………………………………...20

Последовательное и параллельное перемножение……………………21

3.Заключение…………………………………………………………………...24

4.Глоссарий……………………………………………………………………. 25

5.Список литературы…………………………………………………………..26

6.Приложение…………………………………………………………………..27

4

Введение

Параллельные вычисления

Многие задачи требуют вычислений с большим количеством операций, которые занимают значительные ресурсы даже на современной технике, более того, можно с уверенностью считать, что каких бы скоростей ни достигла вычислительная техника, всегда найдутся задачи, на решение которых потребовалось бы значительное время. Многие из таких сложных задач требуют, чтобы результат был получен за как можно меньшее время, или даже строго ограниченное. Так, современные проблемы "большого вызова" возможностям современной науки и техники: моделирование климата, генная инженерия, проектирование интегральных схем, анализ загрязнения окружающей среды, создание лекарственных препаратов и др., ­ требуют для своего анализа ЭВМ с производительностью более 1000 миллиардов операций с плавающей запятой в сек. (1 террафлопс). С другой стороны представляет большую техническую проблему уменьшение времени исполнения каждой операции в микропроцессоре. Очевидным способом увеличить скорость вычислений было бы применение не одного вычислительного устройства, а нескольких, работающих совместно над решением одной задачи. Такой подход носит название параллельных вычислений. Несмотря на кажущуюся простоту решения, оно является подчас весьма нетривиальной задачей по проектированию вычислительной техники и разработке алгоритмов. Первая проблема кроется в том, что для того, чтобы задачу можно было решить с помощью параллельных вычислений, алгоритм её решения должен допускать распараллеливание, мало того, далеко не каждая задача может быть решена параллельным алгоритмом. Другой же, не менее важной проблемой является построение системы, на которой бы возможна была реализация параллельных вычислений.

Параллельные вычисления могут ускорить оптимизационный процесс, при условии, что вычисления требуют намного больше времени, чем отправка,

5

получение и обработка данных. Однако, эффективное планирование операций и контроль системы – комплексная трудноразрешимая задача.

Традиционно программа писалась как последовательность вычислений. Она выполнялась на одном компьютере, имеющем один центральный процессор. Инструкции программы выполнялись одна за другой. Некоторые из сегодняшних программ пытаются использовать мультипроцессоры для вычислений. Программа разбивается на части, которые могут быть решены одновременно. Эти части вычисляются на различных процессорах. Вычислительные ресурсы могут содержать компьютер с мультипроцессором, несколько компьютеров, соединенных по сети, либо и то и другое.

В условиях перехода производителей процессоров к многоядерным архитектурам параллельное программирование становится насущным инструментом каждого продвинутого программиста и исследователя. Стандартом де­факто параллельного программирования является интерфейс передачи сообщений (MPI), но освоить его удается не всем. Поэтому создатели пакетов программ, среди которых MathWork, Inc., озаботились внедрением параллельных и распределенных вычислений в свои пакеты.

Математическая основа параллельных вычислений

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

для того, чтобы произвести второе умножение не требуется знать результата первого, следовательно, оба умножения можно произвести параллельно, и только после этого произвести сложение. Очевидно, не каждое вычисление можно распараллелить. Выражение

можно вычислить только последовательно, сначала первое умножение, затем второе, и только после этого — сложение.

6

1. Основная часть

2.1 Среда MATLAB

MATLAB ­ одна из наиболее широко используемых математических вычислительных сред для технических вычислений. MATLAB начинался в 1970­е как интерактивный интерфейс для EISPACK и LINPACK. С тех пор среда расширилась до функционально богатого продукта, использующего современные числовые библиотеки, такие как ATLAS и FFTW, и с инструментариями во многих прикладных областях, например, математика финансирования, нейронные сети и теория управления. MATLAB обеспечивает встроенный язык сценариев, близкий к C и HPF, и гибкая матричная индексация, что делает MATLAB очень подходящим для программирования матричных задач. Также он содержит обработчики языка программирования JAVA, что делает интеграцию откомпилированных программ простой. MATLAB стал популярным благодаря дружественному интерфейсу. Он широко используется как обучающий инструмент, а хорошие графические возможности позволяют анализировать данные. Кроме того исследователи строят очень сложные системы с использованием языка MATLAB и инструментариев.

Для чего нужен параллельный MATLAB?

Из­за внедрения в серийные числовые библиотеки, MATLAB всегда был серийной программой. В 1995 г. Клив Молер (Mathworks) написал статью «Почему параллельный MATLAB не нужен»(26), утверждая, что Mathworks не собирался разрабатывать параллельный MATLAB в то время. Главные его аргументы были следующими:

1) Модель памяти Распределенная память была доминантной моделью для параллельных

вычислений, и для приложений линейной алгебры сборка/разборка матрицы занимала слишком много времени чтобы эти вычисления были стоящими.

2) Степень детализации

7

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

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

Прошло 8 лет со времени написания статьи, и уже видны огромные изменения в мире вычислений. Эти изменения лишили законной силы все аргументы в пользу того, что параллельный MATLAB не нужен.

1) Модель памяти Поскольку сложность современных научных и технических задач растет,

заметно возрастают время вычисления и требуемые объемы и конфигурация памяти. Рост скорости процессора и объема памяти, доступной на отдельной машине, не может догнать темпа роста требований к вычислениям. Очень часто для текущих научных задач просто не хватает памяти отдельного компьютера, что делает параллельные вычисления необходимостью. В сочетании с улучшениями технологий сетевого соединения, параллельное вычисление стало стоящей задачей.

2) Степень детализации

За прошедшие 8 лет параллельные проекты MATLAB, некоторые состоящие всего из 2­х м­ файлов показали, что несколько экземпляров MATLAB, запущенным на параллельном компьютере могут быть использованы для решения затруднительных параллельных задач без изменений в архитектуре самой среды. Кроме того увеличение размеров задач и скорости процессора сократили время, затраченное на невычислительные подпрограммы.

3) Коммерческая сторона Мощности современных процессоров вполне достаточно для решения

элементарных шагов большинства задач, а объединение нескольких десятков таких процессоров позволяет быстро и эффективно решать многие

8

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

При отсутствии высококвалифицированных параллельных программистов кластеры Beowulf создаются и используются людьми с минимальным опытом

параллельного программирования. В самом деле, кластеры Beowulf обеспечивают университеты с ограниченными ресурсами хорошей платформой для

изучения параллельного программирования и недорогой производительной вычислительной системой для ученых. Beowulf ­ это система, обычно состоящая из одного серверного узла и одного или более клиентских узлов, соединенных при помощи Ethernet или некоторой другой сети. Кроме того, доминирующий способ параллельного программирования, MPI, слишком низкого уровня и слишком склонен к ошибкам. MATLAB известен своей дружественностью. Таким образом, имеется огромный потенциальный рынок для параллельных вычислений MATLAB.

Почему именно MATLAB?

Кроме MATLAB имеются две другие очень популярные технические вычислительные среды. Первая – это Maple®, разработанная Maplesoft, широко известная своими отличными возможностями символических вычислений. Затем Mathematica®, разработанная Wolfram Research, с возможностями процедурного языка программирования. Плюсы MATLAB заключается в следующем:

1)Популярность MATLAB

Всравнении с Maple и Mathematica, существует ощущение, что параллельный MATLAB достиг бы более широкой аудитории. Чтобы получить общее представление о популярности этих трех пакетов сделаем запросы в Google, Rambler, Yahoo, CiteSeer, для числа цитат:

9

 

Google

Rambler

Yahoo

 

CiteSeer

MATLAB

18 900

31 000

55

100

20 922

 

000

 

670

 

 

Maple

15 300

Common

5 090 046

5 201

 

000

word

 

 

 

Mathematica

792 000

4 000

3 680 012

486

Wolfram

 

 

 

 

 

Таблица 1. Поиск 3 популярных матпакетов, выполненный 15 мая 2010г.

2) Дружелюбность к пользователю

Опыт использования всех 3­х пакетов показывает, что у MATLAB наилучший пользовательский интерфейс.

10