Актуальные проблемы инженерных наук 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