параллельное программирование - Научно

advertisement
Актуальные проблемы инженерных наук
7. Тутубалин В.Н. Теория вероятностей и случайных процессов. Основы
математического аппарата и прикладные аспекты. - М.: Изд-во МГУ, 1992.
8. Харитонов В.Г., Ремезов А.В., Сорокина О.В., Сорокина Л.В., Ануфриев
В.М. Обогащение полезных ископаемых. Комплексное использование сырья,
продуктов и отходов обогащения. Учебное пособие - Кемерово: КузГТУ, 2006. -327
с.
9. Авдохин В.М. Основы обогащения полезных ископаемых: в 2 т. Том 2.
Издательство МГГУ, 2008. – 312 с.
10. Бенуни А.Х., Крыжов Л.В., Козаков Е.М. Экономическое обоснование
технических решений на горнорудных предприятиях. - М.: «Недра»,1967. - 156c.
11. Михаил Фленов. Библия Delphi. — СПб.: БХВ-Петербург, 2004. — 880с.
ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ: СПОСОБ
ПОВЫШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ ВЫЧИСЛЕНИЯ В
СИСТЕМЕ MATLAB
Нгуен Зуи Тхаи
Научный руководитель: Сосинская С.С.
Иркутский государственный технический университет, г. Иркутск
Цели использования параллельного программирования
1. Ускорение вычислений с использованием нескольких процессоров.
2. Использование большего количества памяти, чем доступно на одном
компьютере.
3. Сокращение вычислительного времени.
В настоящее время, в некоторых языках программирования, таких как C, C +
+, FORTRAN, поддерживается параллельное программирование с помощью
библиотек MPI.
MATLAB широко используется для разработки различных алгоритмов,
которые могут работать с большими наборами данных. Последние версии Matlab
поддерживают параллельные вычисления.
Программное обеспечение Parallel Computing Toolbox (Параллельный
вычислительный инструментарий) позволяет разгрузить работы в одной сессии
MATLAB (клиенте) путем использования других сессий MATLAB, называющихся
рабочими. Этим можно воспользоваться, чтобы организовать параллельную
обработку.
Параллельный вычислительный инструментарий позволяет организовать до восьми
MATLAB рабочих на локальном компьютере в дополнение к сессии клиента
MATLAB. Программное обеспечение MATLAB Distributed Computing Server
(Распределённый вычислительный сервер Matlab) позволяет работать на удаленном
кластере
компьютеров.
Можно
также
использовать
распределённое
вычислительный сервер Matlab для запуска рабочих сессий на клиентской машине.
149
IV Всероссийская научно-практическая конференция «Научная инициатива
иностранных студентов и аспирантов российских вузов»
На рисунке 1 показана
основная
конфигурация
параллельных вычислений, в
которых
выполняемой
задачей является некоторая
большая операция, которая
должна выполняться в этой
сессии. Задача разделяется на
подзадачи. Эти подзадачи и
текущая задача определяются
в
клиентской
сессии.
Выполнение
задачи
и
вычисление
подзадач
осуществляются
планировщиком,
который
Рисунок 1. Основная параллельная вычислительная
распределяет
подзадачи
конфигурация
процессам.
Каждый процесс получает подзадачу от текущей задачи с помощью
планировщика, выполняет свою подзадачу, возвращает результат работы
планировщику и получает другую подзадачу.
Когда все подзадачи текущей задачи выполнены в процессах, планировщик
начинает
выполнять
следующую
задачу
с
доступными
процессами.
После того как процессы
выполнили свои подзадачи,
они возвращают результаты
планировщику,
который
возвращает все результаты,
полученные
от
всех
процессов
клиенту.
На
рисунке
2
показано
взаимодействие параллельных
вычислительных сессий.
Рисунок 2. Взаимодействие между параллельными
вычислительными сессиями
В качестве примера показано, как численно вычислять интеграл некоторой
функции. Алгоритм заключается в том, что интервал разделен на подинтервалы,
количество которых равно количеству процессов. Каждый процесс вычисляет
интеграл в его подинтервале. Клиентский процесс суммирует результаты всех
рабочих процессов.
1. Создание объекта планировщика с помощью функции FindResource
mysched = findResource('scheduler','type','local');
2. Установка числа рабочих процессов в планировщике mysched
set(mysched,'ClusterSize',8);
3. Создание задачи с помощью функции createParallelJob
mypjob=createParallelJob(mysched);
150
Актуальные проблемы инженерных наук
4. Установка максимального и минимального количества рабочих процессов
для выполнения задачи mypjob
set(mypjob,'MaximumNumberOfWorkers',4);
set(mypjob,'MinimumNumberOfWorkers',4);
5. Установка файла, к которому рабочие процессы могут получить доступ
set(mypjob, 'FileDependencies', {'fpar_integral_trapezium.m'});
Здесь fpar_integral_trapezium – функция вычисления интеграл в типе m-file
6. Создание подзадач для текущей задачи с помощью функции createTask
myobj = createTask(mypjob,@fpar_integral_trapezium,1,{f1,a,b,n});
7. Нахождение задачи в очереди задач с помощью функции submit
submit(mypjob);
8. Ожидание выполняемой задачи с помощью функции waitForState
waitForState(mypjob);
9. Получение результата задачи с помощью функции getAllOutputArguments
results = getAllOutputArguments(mypjob);
10. Уничтожение задачи из планировщика с помощью функции destroy
destroy(mypjob);
На следующем рисунке, таблице и графике показаны результаты
параллельных вычислений интеграла и сравнения его с результатами, полученными
с помощью последовательных вычислений.
Рисунок 3. Параллельное вычисление интеграла функции
Таблица 1. Результат вычисления
Формула
Трапеций
4./(1+x.^2)
Функция
Интервал
(0, 1)
Количество
процессов
Количество
подинтервалов
4
151
20
22
2^6
2^10
2^12
2^14
2^16
2^17
2^18
Время вычисления, с
Последовательное Параллельное
0.0010402
0.0048653
0.017505
0.27148
1.0900
4.3309
17.6635
34.9334
69.8251
12.6367
12.8364
13.3352
14.6161
14.7443
16.7991
23.7351
34.9198
49.1272
IV Всероссийская научно-практическая конференция «Научная инициатива
иностранных студентов и аспирантов российских вузов»
Рисунок 4. Временные графики для параллельного и последовательного вычислений
Заключение
Параллельные вычисления являются одним из способов повышения
производительности, но они не применяются для всех алгоритмов. По сравнению с
последовательными вычислениями, параллельные вычисления в Matlab являются
эффективными, когда наборы данных велики.
Список литературы:
1. Игорь Ануфриев, Александр Смирнов, Елена Смирнова. MATLAB 7. СанктПетербург 2005.
2. Половко А.М., Бутусов П.Н.. MATLAB для студента – СПБ.: БХВПетербург, 2005. – 320 с.
3. Мэтьюз, Джон, Финк, Куртис. Численные методы. Использование
MATLAB, 3-е издание. : Пер. с англ. — М. : Издательский дом "Вильямс", 2001. —
720 с.
4. Н.Н.
Оленёв,
Р.В.
Печёнкин,
А.М.
Чернецов.
Параллельное
программирование в Matlab и его приложения - Вычислительный центр ИМ. А.А.
ДОРОДНИЦЫНА РАН Москва 2007
5. Сайт http://matlab.exponenta.ru. Консультационный центр Matlab компания
Softline.
6. Сайт http://www.mathworks.com.
152
Download