Параллельные вычисления – актуальная, развивающаяся современная область вычислительных наук. Ее актуальность следует
а) из потребности в больших вычислительных ресурсах для решения прикладных задач и моделирования процессов;
б) предельности последовательных архитектур и схем вычислений.
Существующие в настоящее время пакеты прикладных программ, содержащие обширные библиотеки математических функций и процедур, которые оптимизированы под выполнение в среде параллельных вычислений, освобождают пользователя от необходимости реализации собственных математических функций, поддерживающих параллельные вычисления. Это экономит время, затрачиваемое на решение задачи, и уберегает от возможных логических ошибок.
Мы остановимся на среде разработки Matlab. Особенности рассматриваемого продукта, условия и принципы организации параллельных вычислений подробно описаны в литературе. Мы же рассмотрим особенности параллельных вычислений в среде Matlab на примере конкретной задачи минимизации функции.
Для решения была взята задача определения коэффициентов функции преобразования электрически малой дипольной антенны с полупроводниковым диодом. Постановка задачи подробно описана в литературе [1]. Функция реализует зависимость амплитудного коэффициента (KA) от измеряемого напряжения (UA). Формула, аппроксимирующая амплитудную характеристику, выглядит следующим образом:
где A, B и C – коэффициенты, которые необходимо определить. Таким образом, функция содержит в своем составе 3 переменных.
В качестве исходных данных были взяты измерения амплитудного коэффициента и напряжения по 19 точкам (табл. 1):
Ua, мВ |
1±0,1 |
2±0,1 |
3±0,1 |
5±0,1 |
7±0,1 |
10±0,1 |
20±0,1 |
30±0,1 |
KA |
0.77 |
1.1 |
1.35 |
1.74 |
2.1 |
2.58 |
3.95 |
5.18 |
Ua, мВ |
50±0,2 |
70±0,3 |
100±1 |
200±1 |
300±1 |
500±2 |
700±3 |
1000±3 |
KA |
7.42 |
9.6 |
12.66 |
22.07 |
30.68 |
47.38 |
63.34 |
86.41 |
Ua, мВ |
1200±3 |
1500±3 |
1999-5 |
|||||
KA |
101.5 |
123.91 |
160.63 |
Итоговая минимизируемая функция в общем виде выглядит следующим образом:
где n – количество исследуемых точек.
Поиск минимума функции осуществлялся с помощью команды fminunc из пакета Optimization Toolbox. Она реализует такие методы гладкой безусловной оптимизации, как:
- метод наискорейшего спуска (Steepest Descent method);
- квази-Ньютоновский BFGS-метод (Brouden–Fletcher–Goldfarb–Shanno);
- квази-Ньютоновский DFP-метод (Davidon–Fletcher–Powell);
- методы, основанные на построении доверительных двумерных областей (trust-region).
Вычисления производились в последовательном и параллельном режиме. Для оценки времени выполнения использовался Profiler (профилировщик)Matlab. Он позволяет определить время, затраченное на выполнение каждой строки кода функции или скрипта.
Все опыты проводились на вычислительной машине со следующими параметрами:
- ОС: Windows 7;
- процессор: Intel® CORE™ i5-3550 CPU @ 3.30 GHz 3.70 GHz;
- количество процессоров: 4;
- ОЗУ: 4 Гб;
- тип системы: 64-разрядная.
По результатам моделирования в последовательном варианте, время, затраченное на выполнение функции поиска минимума, составило 0,58 секунды, количество расчетов функции равно 178 при 32 итерациях. При выполнении в параллельном режиме (при использовании команды parpool(4)) время выполнения функции составило 5,04 секунды. При этом время работы всей программы (от старта и до получения результата) составило 32,354 секунды. То есть, кроме увеличения времени выполнения функции поиска минимума, добавились накладные расходы параллельной обработки информации, а именно, время подготовки к распараллеливанию (порядка 19 секунд, это объясняется тем, что создание потока – очень сложная операция, требующая значительных вычислительных затрат) и отключения функции распараллеливания (порядка 4 секунд). В случае уменьшения числа потоков время выполнения команды fminunc несколько уменьшается, что может быть связано с уменьшением расходов на взаимодействие между параллельными процессами. Таким образом, в случае решения поставленной задачи команда распараллеливания Matlab не дала положительных результатов по скорости выполнения. Связано это может быть с тем, что особенностью данной функции является именно распараллеливание вычисления градиента, количество расчетов которого в данном случае невелико.
По результатам основного решения задачи было решено провести дополнительное исследование зависимости распараллеливания от количества переменных. В литературе доказывается, что мы можем модифицировать функцию путем изменения количества переменных. Согласно этому утверждению, были составлены и исследованы функции числом переменных от 2 до 26. Графики изменения времени выполнения функции fminuncпредставлены на графике (рис. 1).
По результатам сравнительного анализа было выявлено, что прямой зависимости времени выполнения функции поиска минимума от количества переменных нет. Наблюдается зависимость от количества итераций выполнения алгоритма (вычисления последовательных приближений x1, x2, … и т.д.), (рис. 2). В среднем, каждые 30 итераций выполняются за 5,5 секунд.
Дополнительно была исследована функция Растригина от 100 до 250 переменных. Результаты приведены на графике (рис. 3). Анализ показывает, что от изменения числа переменных разница по скорости работы функции с таким количеством переменных в задаче поиска минимума функции междуfminunc из Optimisation Toolbox и с использованием Parallel Toolbox не зависит. Анализ скорости выполнения команды по количеству потоков показывает, что введение распараллеливания вычислений также не дает положительных результатов.
Таким образом, из полученных результатов видно, что при увеличении числа ядер на задачу среднее время решения задачи не улучшается, а даже наоборот, ухудшается. Следовательно, решать исходную задачу методами параллельной обработки в среде Matlab неэффективно. Это может быть вызвано накладными расходами, которые превышают возможную выгоду от распараллеливания. К таким расходам относятся операции, связанные с взаимодействием между параллельными процессами, например, доступ к общему ресурсу.
Библиографический список
- Лукьянов В.И, Токатлы В.И, Тищенко В.А. Исследование функции преобразования электрически малой дипольной антенны с полупроводниковым диодом. Измерительная техника. 2000. № 2.
- Г.В. Жиба, А.С. Миронов. Исследование эффективности использования Matlab при распределенных вычислениях. Электронное научное издание «Ученые заметки ТОГУ». 2015, Том 6, № 4, С. 460 – 464.
- Жуковский А.А., Брылева О.А. Особенности применения инструмента Matlab Parallel Computing Toolbox в распределенных вычислениях. 9-я Международная молодёжная научно-техническая конференция «Современные проблемы радиотехники и телекоммуникаций РТ-2013». С. 365.
- Parallel Computing Toolbox. Mathworks. URL: http://uk.mathworks.com/products/parallel-computing/