Мударисов И.М.

advertisement
Параллельный алгоритм расчета
неоклассической модели
межотраслевого баланса
Мударисов И.М., студент 4 курса
кафедры вычислительной математики,
математический ф-т УдГУ, г. Ижевск
Описание модели
Рассматриваемая модель подробно описана в работе: Э.В. Автухович,
С.М. Гуриев, Н.Н. Оленев, А.А. Петров, И.Г. Поспелов, А.А.
Шананин, С.В. Чуканов «Математическая модель экономики
переходного периода», вычислительный центр РАН, Москва 1999.
Приведем краткое описание модели.
N – число чистых отраслей
A – число финансово-промышленных групп (ФПГ)
M – число видов первичных ресурсов
F j (X j , I j ) – производственная функция, описывающая
выпуск продукта j-й отраслью, принадлежащей ФПГ, где
X j  ( X 1j ,..., X Nj ), I j  ( I1j ,..., I Mj ) – векторы продуктов и
первичных ресурсов, затрачиваемых в ФПГ  для выпуска j-го
продукта
F0 ( X 0 ) – вогнутая функция полезности, описывающая спрос
населения (индекс потребления), где X 0  ( X 10 ,..., X N0 ) – вектор
конечного потребления продуктов населением.
Описание модели
Выпуск j - го продукта отраслью, принадлежа щей ФПГ 
распределя ется следующим образом :
X ij  производст венные затраты j - го продукта, которое
ФПГ  поставляет ФПГ  для производст ва i - го продукта.;
X 0j  поставки населению;
G j  поставки государств енной администра ции;
 j ( X 0j ,..., Z ij ,...)  затраты на услуги торговых посреднико в.
Из количества X ij j - го продукта, которое ФПГ  поставляет
ФПГ  для производст ва i - го продукта, часть величиной
Y ji реализуе тся по традицион ным каналам, а часть величиной
Z ij  по рыночному каналу.
За единицу i - го продукта, поставленн ого по традицион ным
связям, потребител ь недоплачив ает величину pi , а за каждую
единицу m - го первичного ресурса -  m .
Основная задача модели
min f (u ), u  R dimU
g i (u )  0, i  1,..., dimW ,
где функции f (u ), g i (u ) - выпуклые,
u  { X 0j , X kj , I mj , X ij , X 0j , G j , Y ji , Z ij , pi ,  m }i , j ,k 1,..., N ;
 ,  1,..., A;m 1,..., M
dimU  3N 2 A 2  N 2 A  NAM  2NA  2N  M
dimW  4N 2 A 2  2N 2 A  NAM  3NA  2N  M  A
Экономическая интерпретация задачи – это максимизация
функции полезности (индекса потребления), при
выполнении балансовых соотношений.
Описание функций, участвующих в задаче
f (u )   F0 ( X 0 ),


j
j
i
0
0
i
g1 (u )   F j ( X , I )   X j  X j  G j   j ( X j ,..., Z j ,...)
N
i,

j 11,...,
,..., A


g 2 (u )   X kj   X kj 
,


j ,k1,...,1,...,A N
g 3 (u )   g 2 (u ),


g 4 (u )   X 0j   X 0j 
,


 j 1,..., N
g 6 (u )  X ij  Y ji  Z ij i , j 1,..., N ,

g 5 (u )   g 4 (u ),

g 7 (u )   g 6 (u ),
 ,  1,..., A


g 8 (u )   I mj  I m 
,
 j ,
 m 1,..., M


g 9 (u )    pi Yij    m I mj   p j G j   p j Y ji 
,
j ,m
j
i, j,
i , j , 
 1,..., A
g10 (u )   G j j 1,..., N ,
g11 (u )   I mj

g12 (u )   X 0j
 1,..., A

j 1,..., N
 1,..., A
,
g14
 
(u )   Z 
j 1,..., N
 1,..., A
,
m 1,..., M
i
j i , j 1,..., N
 ,  1,..., A
.
Метод решения
Метод одновременного решения пары двойственных задач [1]
2
w k  arg min K ( w), где K ( w)  f (u k )   wi g i (u k )
wi  0 ,iI k
I k  {i : g i (u )  ε}
k
iI k
u
k 1


k
k
 u   k  f (u )   wi g i (u ) 
iI k


k
Метод сопряженных градиентов [1]
w k 1  w k   k p k ,  k  arg min
K (w k   p k )
  0 , w k p k  0
 K ( w k ) i   k pik 1 , i  I k ,
p 
0, i  I k ,

k
2
k 1
2

(

K
(
w
)
)
/
(

K
(
w
)
)
, если I k  I k 1 ,


i
i

iI k
 k  iI k

если k  0 или I k  I k 1 ,
 0,
{i : wik  0, K ( w k ) i  0}, если k  0 или K ( w k ) i  0 для всех i  I k 1 ,
Ik  
k
I

{
i
:
w
k 1
i  0}, в остальных случаях .

k
i
[1] – Б.Т. Поляк «Введение в оптимизацию», «Наука», Москва 1983.
Оценка размерности задачи
Число чистых отраслей N возьмем равным 50, финансовопромышленных групп (ФПГ) – 25, а первичных ресурсов – 10.
Тогда dimU = 4765110 ~ 4.5x220, dimW = 6391385 ~ 6x220. Если
каждая координата вектора u представляется одним числом типа
double (8 bytes), то для хранения вектора u необходимо порядка 40
Mb.
N=50 A=25 M=10 =>
u ~ 40Mb
Хранение такого объема информации в оперативной памяти вполне
реально для современных ЭВМ. Если же мы захотим разместить в
памяти градиенты всех функций ограничений, то потребуется
матрица размером dimU x dimW. Ее объем оценивается в 2x105 Gb.
Это совершенно нереальный для хранения объем информации.
Средства реализации до этапа распараллеливания


Mathematica 4.1
Пакет Mathematica использовался для формирования
тестовых примеров. Основная ценность реализации в
точности получаемых результатов.
С++
Основная ценность реализации – это создание основы для
параллельного варианта численной реализации методов.
Программа на языке C++ характеризуется следующим:
исходные данные хранятся на внешнем носителе в файлах,
результаты каждой итерации (новые приближения прямых и
двойственных переменных и значение целевых функций)
включаются в файл отчета. Ведется учет времени по
итерациям. Использование языка C++, а не С, обусловлено
удобством работы с файлами.
Идеи распараллеливания
Возможны следующие пути разработки параллельного
алгоритма:


Первый путь предполагает распараллеливание
алгоритма на теоретическом уровне. Ярким примером
такого распараллеливания служит параллельный
алгоритм умножения матрицы на вектор.
Второй путь предполагает анализ работы
непараллельной реализации и выявление «узких» мест
в работе программы. Нахождение фрагментов именно
программной реализации, а не алгоритма, требующих
значительных вычислительных ресурсов и
поддающихся распараллеливанию.
Реализация идей распараллеливания


Первый путь привел к распараллеливанию основного
алгоритма за счет множителя  k
Второй путь выявил следующее: расчет градиента квадратичной функции в методе сопряженных градиентов
занимает в работе всей программы более 90% времени.
Определим причины этого факта.
Размерность градиента равна dimW. Вычисление одной
координаты градиента требует вычисления значений
квадратичной функции в двух точках, что требует порядка dimU*dimW операций. Получаем объем вычислений
порядка dimW*dimU*dimW.
Никакой другой фрагмент программной реализации не
требует такого объема вычислений.
В результате распараллеливания, именно этот путь привел к значительному ускорению времени расчета модели.
Схема распараллеливания

По множителю  k
Главная (master) задача запускает дочерние (slave) задачи, посылает им
необходимые аргументы и множитель(-и) ,получает
результаты и
k
выбирает лучший вариант.

Расчета градиента квадратичной функции
Главная (master) задача запускает N_task дочерних (slave) задач,
посылает им векторы u, wk, множество Ik и индексы Start_k, Finish_k.
Slave задача рассчитывает часть градиента, начиная со Start_k-ой
координаты по Finish_k-ую. Результатом работы slave задачи являются
(Finish_k -Start_k) координат искомого градиента. Во время работы
slave задач master работает подобно им. Значение (Finish_k -Start_k)
определяется числом запускаемых задач N_task, а именно,
(Finish_k -Start_k) = [dimW / (N_task+1)]
Так как объем вычислений для всех slave задач получается равным, то
прием результатов осуществляется просто по порядку, а не по мере
окончания вычислений в slave задачах.
Средства распараллеливания





В течение 3-го, 4-го курсов учебы на математическом
факультете УдГУ студенты кафедры вычислительной
математики изучают курсы «Математическая экономика» и
«Параллельные алгоритмы». В рамках первого курса была
предложена сама задача, а в рамках второго – средства
параллельного программирования, в частности PVM
(Parallel Virtual Machine).
Основная часть программы написана на языке C++
Параллельная часть программы реализована с помощью
PVM
Отладка и мониторинг производились с помощью XPVM
Запуск программ осуществлялся на кластере PARC
Кластер включает в себя 5 узлов на каждом из которых
имеется 2 процессора Intel Pentium III 800 МГц
Результаты распараллеливания
Результаты полученные при решении задачи с N=10, A=5, M=5.
Приводится график временной зависимости выполнения одного объема
вычислений при различном числе запускаемых задач для разного
количества узлов кластера
Время, с

200
180
160
140
120
100
80
60
40
20
0
один
дв а
три
четыре
пять
0

1
3
5
7
9
11
Число запускаемых задач
13
15
17
Вывод: Использование второго процессора на одном узле уменьшает
время в 2 раза, что является максимально возможным. Использование
двух узлов уменьшает время счета в 3.5 раза при максимально
возможном в 4 раза. Использование 3-х, 4-х, 5-ти узлов дает примерно
одинаковое ускорение в 5.5 - 6.5 раз
Результаты распараллеливания

Результаты полученные в XPVM при решении задачи с N=4, A=4, M=2.
Запуск на 5 двухпроцессорных узлах кластера PARC.
Приводится структура работы программы во времени

Оптимальный вариант:
 Неоптимальный вариант:
master + 9 slave задач
master + 19 slave задач
Вывод: Чрезмерное увеличение числа задач ведет к простою
процессоров во время ожидания посылаемых данных

Результаты распараллеливания

Результаты полученные в XPVM при решении задачи с N=4, A=4, M=2.
Запуск на 5 двухпроцессорных узлах кластера PARC.
Приводится характеристика работы запускаемых задач во времени

Оптимальный вариант:
master + 9 slave задач

Вывод: При оптимальном подборе числа запускаемых задач удается
достичь более эффективной загрузки всех процессоров одновременно.
То есть достигается равномерная загрузка процессоров.

Неоптимальный вариант:
master + 19 slave задач
Результаты распараллеливания

Результаты полученные в XPVM при решении задачи с N=10, A=5, M=5.
Запуск на 5 двухпроцессорных узлах кластера PARC.
Приводится структура работы программы во времени

Оптимальный вариант:
 Неоптимальный вариант:
master + 9 slave задач
master + 19 slave задач
Вывод: В оптимальном варианте число запускаемых задач
равняется числу используемых процессоров кластера.

Результаты распараллеливания

Результаты полученные в XPVM при решении задачи с N=10, A=5, M=5.
Запуск на 5 двухпроцессорных узлах кластера PARC.
Приводится характеристика работы запускаемых задач во времени

Оптимальный вариант:
master + 9 slave задач

Вывод: Данные результаты показывают эффективность распараллеливания расчета градиента квадратичной функции. Видно, что работа
остальной части программы занимает значительно меньше времени.

Неоптимальный вариант:
master + 19 slave задач
Выводы




Изучены и освоены средства создания и мониторинга
параллельных программ.
Создана параллельная реализация метода решения
поставленной задачи
Проведен мониторинг работы тестовых примеров
Полученные результаты показали высокую степень
распараллеливания задачи расчета на кластере
неоклассической балансовой модели
Download