Научная статья на тему 'Разработка объектно-ориентированной системы для организации параллельных вычислений в SMP-системах и её приложение к задачам термодинамического моделирования'

Разработка объектно-ориентированной системы для организации параллельных вычислений в SMP-системах и её приложение к задачам термодинамического моделирования Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
70
11
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Беляков Никита Андреевич

В настоящей работе предлагается масштабируемый подход к организации параллельных вычислений в системах с общей памятью (SMP-системах). Этот подход изначально разрабатывался для решения конкретной прикладной задачи из области термодинамического моделирования [1], однако, вообще говоря, он не привязан к конкретной проблеме и может быть применён к любой задаче, которая может быть сформулирована виде некоторой требующей большого объёма вычислений функции Φ(x, p) с конечным числом аргументов x и параметров p.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Беляков Никита Андреевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Разработка объектно-ориентированной системы для организации параллельных вычислений в SMP-системах и её приложение к задачам термодинамического моделирования»

Разработка объектно-ориентированной системы для организации параллельных вычислений в SMP-системах и её приложение к задачам термодинамического моделирования

Н.А. Беляков, МГТУ им. Н. Э. Баумана, аспирант, n.belyakov@gmail.com

В настоящей работе предлагается масштабируемый подход к организации параллельных вычислений в системах с общей памятью (SMP-системах). Этот подход изначально разрабатывался для решения конкретной прикладной задачи из области термодинамического моделирования [1], однако, вообще говоря, он не привязан к конкретной проблеме и может быть применён к любой задаче, которая может быть сформулирована виде некоторой требующей большого объёма вычислений функции Ф(х, p) с конечным числом аргументов x и параметров p.

Термодинамическая модель сплавов на основе системы железо-хром-кобальт

Термодинамическое моделирование в настоящее время является достаточно популярным подходом [2], широко применяемым при разработке новых материалов, обладающих заданной совокупностью свойств. Этот подход, основанный на моделировании термодинамических характеристик системы и применении знаний о связи структуры со свойствами материала, позволяет численно моделировать процессы, протекающие в материале, и прогнозировать результаты протекания фазовых превращений, формирования типов структуры материала и связанных с ними физических свойств. Это, в свою очередь, даёт возможность свести к минимуму количество трудоёмких, чрезвычайно продолжительных и дорогостоящих натурных экспериментов, заменив их вычислительными. Отметим здесь, что фазой в термодинамике называют однородную по составу и свойствам часть термодинамической системы, отделённую от других фаз поверхностями раздела, на которых скачком изменяются некоторые свойства системы.

Современные наука и техника требуют разработки многокомпонентных материалов, обладающих сложным сочетанием различных свойств, что накладывает десятки условий на их параметры и

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

К числу подобных материалов, в частности, относятся рассматриваемые в данной работе многокомпонентные высокопрочные магнитно-жёсткие сплавы на основе системы железо-хром-кобальт ^е-Сг-Со), обладающие уникальным сочетанием высоких магнитных и механических характеристик (прочности, пластичности, коррозионной стойкости, способности обрабатываться на металлорежущих станках). Это позволяет использовать их в качестве материалов для изготовления постоянных магнитов сложной конфигурации, применяемых, например, при изготовлении высокоскоростных гистерезисных электрических двигателей и других специальных устройств [3].

Ранее была разработана термодинамическая модель [1] многокомпонентных двухфазных сплавов, испытывающих расслоение с образованием ферромагнитной фазы, в частности, сплавов на основе системы Fe-Cr-Co. Однако отсутствовала её эффективная программная реализация. В рамках этой модели можно вычислять параметры термодинамического (фазового) равновесия сплавов — прежде всего, составы и относительные количества фаз в системе, а также параметры кристаллических решёток в равновесном состоянии и некоторые другие.

Моделируемой термодинамической величиной в модели [1] является термодинамический потенциал — свободная энергия (энергия Гельмгольца [2]) образования единицы двухфазного Ж-компонентного сплава:

Fт (х(1),П)=П • /т(х(1))+у2 • /т(х(2)), (1)

где х(р) = (х1(р), х2(р), ..., хЖ(р))т — вектор концентраций компонентов фазы р, \р — объёмная доля фазы р, р = 1, 2, Т — температура, /т — свободная энергия образования одной фазы:

/т (х(р) )= /с,т (х(р) )+ /т,т (х(р) ) Р = 1, 2. (2)

Здесь

N-1 N

/т (х(р) Ы X

р)-X я* • тк + X(р)-X ^ • тк

_к=0__х (р) • х (р).

х (р) + х (р) 1=1 ]= 1 + 1 л.i -I- л. j

N / \ N t

+ Л • т-X х(р) • 1п (х(р) )+Х х(р) X -к' 1=1 1=1 к=1

к = 0

— так называемый химический вклад в свободную энергию образования фазы р, обусловленный описывает тепловым эффектом и изменением энтропии при образовании фазы сплава. Коэффициенты ак, Ьк и ск полиномов являются параметрами модели (главным образом, эмпирическими). Их значения приведены в [1]. Степени полиномов г, s и t не превышают четырёх [1], R = 8,314 Дж/моль — универсальная газовая постоянная.

В выражении (2)

Л И==

я и-

( т Г+1

(>), т<тс(хр)

F1 (хр )-л(хр )-(т - Тс (хр))+

А1 (х('))-т2 -тс (х('))-

1- ехр

т -тс (хр) т - тс (хр )

- ^ (хр) т>тс (хр)

— вклад энергии магнитного упорядочения в свободную энергию образования фазы р [1], где введены обозначения

А1 (х(р))- тс (х(р)),

п - (п + 1)

Я

1 (х(р) ) =

Я

0,т

(х(р))= А1(х(^)-тс)(х(Р)) + А1 (х()- т-(1 + т)-тс (х(р))-т- а(х(р))

л1 (х (р) )= Ак1!) тс (х (р)) ^ ' М п + т , '

= т

I

i=1

е1х(р) + /,- (х

л (х(р > )2

температура

/ Ч ^

I Кюри для фазы р, Л (х ( р ) )= л (Ее )1 р)

г' =1

— концентрационная зависимость изменения энтропии при магнитном фазовом переходе для фазы р. Значения параметров модели т^те), Л^е), т, п, ег,/, кг можно найти в [1].

На аргументы функции (1) наложены следующие ограничения, прежде всего, выражающие закон сохранения количества вещества при фазовых переходах, а также условия нормировки величин:

хр > е

(0,1), ^р е

(о, 1), ¿х гр) = 1, V!+у2=1, р=

1, 2, (3)

х,(0) - X,(1)

х,(2) - X,(0)

где x(0) = (xi(0), х2(0), ..., xa/0))t — вектор концентраций исходного сплава, который распадается на две фазы (параметр задачи).

Свободная энергия образования сплава (1) в состоянии устойчивого или метастабильного термодинамического (фазового) равновесия достигает некоторого локального минимума. Поэтому задача определения параметров фазового равновесия сплавов сводится к задаче поиска некоторого локального минимума функции (1) при ограничениях (3) и (4), постоянной температуре T и составе x(0) исходного сплава:

Ft (x(Vi) = min Ft {x(1),Vi, (5)

X ,V, (0)

1 X /=const

где x(1) — искомый вектор концентраций фазы 1 в состоянии

фазового равновесия, v 1 — объёмная доля этой фазы. Соответствующие характеристики для фазы 2 можно найти из соотношений (3) и (4).

Поиск локального минимума осуществляли модифицированным методом градиентного спуска с дроблением шага [4], полагая, что вне области, определяемой ограничениями (3) и (4), функция принимает бесконечно большие значения.

Схема параллельных вычислений

Задача (5) может быть сформулирована в виде функции Ф(х, p), где x

— вектор аргументов, который в нашем случае представляет собой и входной, и выходной параметр функции (на входе — начальное приближение минимизации, на выходе — искомая точка минимума), а p

— вектор параметров задачи (включает состав исходного сплава x(0) и температуру T). Элементы вектора x варьируются в процессе решения задачи, а вектор p остаётся постоянным. Как правило, в приложениях требуется решать задачу (5) многократно — для разных значений параметров p. При этом решение этой задачи для каждого отдельного значения p представляет (в данном случае) последовательный процесс градиентной минимизации. Но решение задачи для одного значения p не зависит от решения для другого значения, т.е. решать задачу для разных значений p можно параллельно, в рамках SPMD-модели параллельных вычислений (Single Program/Multiple Data), где разные потоки выполняют разные части одной и той же программы с разными данными.

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

v

2

прикладной задачи (а, следовательно, и возможность её повторного использования и для решения других задач), был выбран объектно-ориентированный подход для её проектирования. В системе было выделено три основных независимых модуля:

• модуль, реализующий модель прикладной задачи (в данном случае это численная модель сплава);

• модуль, осуществляющий решение прикладной задачи (в данном случае это локальная минимизация некоторой целевой функции);

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

Связь между этими модулями осуществляется с помощью общих интерфейсов, что обеспечивает слабое зацепление (low coupling) между модулями и возможность использовать эти модули независимо друг от друга, т.к. при таком подходе реализация каждого отдельного модуля не зависит от реализаций других.

Как видно из представленной декомпозиции задачи, уровень абстракции возрастает от первого модуля к третьему: первый модуль представляет собой формулировку конкретной прикладной задачи, отражающую её конкретную предметную область и сам по себе ничего не решает (это некоторая численная модель); область применения второго модуля, вообще говоря, не обязана ограничиваться моделью, представленной в первом модуле, и может включать в себя достаточно широкий класс задач локальной оптимизации; но задачи оптимизации, решаемые вторым модулем, — это лишь частный случай задач, которые может решать третий модуль.

Выбранная SPMD-модель организации параллельных вычислений хорошо ложится на архитектуру вычислительных систем с общей памятью (SMP-системы). Такие вычисления удобно проводить, в частности, и на широко распространённых в настоящий момент настольных вычислительных машинах на базе многоядерного процессора с 80х86-совместимой архитектурой. В таких системах в качестве сущности операционной системы, в рамках которой осуществляются вычисления, в нашем случае лучше использовать потоки выполнения (threads) уровня ядра, работающие в рамках единого процесса.

В качестве интерфейса управления потоками в рассматриваемой системе, был выбран достаточно удобный низкоуровневый объектно-ориентированный интерфейс, предоставляемый открытой кроссплатформенной библиотекой Nokia Qt (URL: http://qt.nokia.com/). Язык реализации — С++.

Особенностью рассматриваемой прикладной задачи является то, что при разных значениях параметров задачи p расчёты в рамках второго

модуля могут занимать достаточно различающиеся интервалы времени. Причём, вообще говоря, априорно невозможно установить, сколько времени будет выполняться какая-либо из частей задачи. Впрочем, такая особенность может быть присуща и, вообще говоря, любой другой задаче. Поэтому простая статическая разбивка всего диапазона параметров на равные интервалы, количество которых равно количеству вычислительных ядер в системе, оказывается неэффективной, и требуется некоторая динамическая балансировка загрузки ядер. Такую балансировку (а также предварительную разбивку диапазона параметров, распределение работы между вычислительными потоками и сбор результатов) осуществляет основной компонент третьего модуля — планировщик потоков.

Для перебора значений параметров р и формализации понятий «задача» и «часть задачи» была введена дополнительная абстракция — итератор, реализующая одноимённый поведенческий шаблон объектно-ориентированного проектирования [5]. В частности, с помощью итераторов вычислительные потоки осуществляют перебор значений параметров задачи. Поскольку параметры задачи существенно зависят от её предметной области, то для обеспечения независимости планировщика от конкретной прикладной задачи, каждый итератор должен реализовывать некий общий интерфейс. Этот интерфейс должен предоставлять сервис доступа к следующей атомарной части задачи (в нашем случае это отдельное значение вектора параметров р) — назовём его пех^), а также сервис проверки наличия оставшихся нерешённых частей задачи — назовём его hasNextO. Планировщик должен работать с конкретными объектами итераторов через этот интерфейс, не вдаваясь в подробности реализации этих объектов. Планировщик должен быть способен разбивать итератор на части, каждая из которых включает в себя некоторый поддиапазон параметров из общего диапазона (часть задачи). Мы облегчим эту задачу планировщику и включим в обобщённый интерфейс итератора метод split(), реализация которого должна быстро разбивать диапазон перебираемых параметров на две части в некотором заданном соотношении.

Предлагается следующая схема динамического планирования.

1. На этапе инициализации вычислений, перед их запуском, планировщик разбивает всю задачу п равных порций с помощью последовательного вызова операции split() над переданным ему итератором с соотношением 1/п. Здесь п — количество вычислительных потоков в пуле потоков планировщика. Полученные итераторы передаются вычислительным потокам во владение.

2. Потоки запускаются на счёт.

3. Когда поток завершается, объект потока извещает планировщик об этом (с помощью механизма сигналов и слотов Qt).

4. Планировщик последовательно просматривает все ещё работающие потоки в поисках потока, у которого на момент просмотра остаётся больше всего работы. Для этого в интерфейс итератора включена операция гетшш^О, возвращающая количество атомарных частей задачи. Перед тем как получить от каждого потока данные об оставшейся работе, планировщик устанавливает специальный флаг блокировки итератора в объекте вычислительного потока, блокирующий итератор. Сам вычислительный поток при этом специально не приостанавливается и может продолжать вычисления. Приостановка потока произойдёт, лишь если он попытается обратиться к своему итератору и взять очередную атомарную часть задачи. Если же флаг будет снят до того, как закончатся очередные вычисления функции, то вычислительный поток даже и не заметит, что его опрашивал планировщик. Если у очередного просматриваемого потока работы осталось меньше, чем у найденного ранее «максимально загруженного» потока, то флаг блокировки в этом очередном потоке снимается и планировщик просматривает следующий поток. Если у очередного просматриваемого потока работы осталось больше, то с потока, который считался максимально загруженным до этого, снимается флаг блокировки и этот поток извещается, что он может продолжать работу. Очередной просматриваемый поток теперь считается максимально загруженным — планировщик, не снимая с него флага блокировки, переходит к следующему потоку из пула и т.д. — пока не будут просмотрены все потоки в пуле.

5. Работа максимально загруженного потока делится планировщиком поровну с помощью операции sp1it() итератора, и половина отдаётся завершившемуся ранее потоку, инициировавшему весь этот процесс планирования, а половина остаётся у найденного потока.

6. Планировщик запускает на счёт завершившийся ранее поток и снимает флаг блокирования с найденного максимально загруженного потока, извещая его при необходимости, что он может продолжать работу.

7. «Максимально загруженный» поток может быть и не найден в пуле потоков — если у каждого выполняющегося потока осталось атомарных частей задачи меньше некоторого заданного минимума (например, меньше двух). В этом случае планировщик ничего не делает, он ожидает завершения всех потоков.

Как показывает практика, более эффективно загружает потоки

модификация этого алгоритма, в которой исходная задача на этапе

инициализации делится не на n равных частей, а на (n+1) часть — n одинаковых частей отдаются потокам, а (п+1)-я часть, которая, вообще говоря, может быть не равна остальным n частям, остаётся во владении планировщика. На завершающем этапе работы в рамках описанного выше алгоритма, т.е не найдя потока, способного поделиться частью своей работы, планировщик отдаёт потоки атомарные части задачи из своего внутреннего итератора. Как правило, это позволяет лучше сбалансировать загрузку на завершающем этапе вычислений.

Некоторые результаты

На рис. 1 приведены графики зависимости времени вычислений и ускорения от количества используемых потоков для решения задачи поиска параметров термодинамического равновесия в трёхкомпонентных сплавах Fe-Cr-Co (N = 3) с температурами из диапазона 773 - 973 К с шагом перебора 0,1 К и со следующими фиксированными значениями концентраций компонентов исходного сплава (x(0)): X(Co)(0) = 0.15, X(Cr)(0) = 0.16 (атомные (ат.) доли). Т.е. всего имеется 2000 атомарных частей задачи. В табл. 1 приведены соответствующие числовые значения. В данном примере итератор параметров перебирает тот элемент вектора p, где хранится текущая температура, в заданном диапазоне и с заданным шагом, оставляя неизменными остальные его элементы. Можно также реализовать итераторы перебирающие другие элементы вектора p, например, отвечающие за состав исходного сплава.

В качестве вычислительной системы использовалась рабочая станция на базе 80х86-совместимого центрального процессора Intel Core i7 870 (Lynnfield) с микроархитектурой Nehalem, имеющего 4 вычислительных ядра, каждое из которых поддерживает два потока (посредством технологии HyperThreading) — всего 8 логических ядер. Эксперименты проводились в операционной системе Ubuntu Linux 11.04 x64. На графиках показаны усреднённые по пяти экспериментам значения. Потокам назначались маски соответствия (affinity mask) вычислительным ядрам таким образом, чтобы сначала использовались 4 физических ядра и лишь только затем загружались логические ядра, предоставляемые технологией HyperThreading.

Табл. 1. Время вычислений и ускорение для рассмотренного примера

Количество потоков Время вычислений, с Ускорение

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

1 137,996 1,00

2 69,083 1,99

3 48,886 2,82

4 36,872 3,74

5 34,598 3,99

32,536 30,991 29,382 29,550

4,24 4,45 4,69 4,67

160 П

140^

| 120 ^

51005

£ 80^ х

1 80-с. са

4020 4-1-1-1-1-1-1-1-1-1-1

0123456789 10

4

¡3

О. О

1

<И-1-1-1-1-1-1-1-1-1-1

01 23456789 10

Количество потоков

Рис. 1. Время вычислений и ускорение для рассмотренного примера

На рис. 1 видно, что вначале (при загрузке четырёх физических ядер) ускорение практически линейно. Далее (при использовании HyperThreading) ускорение падает, хотя и продолжает носить линейный характер.

На рис. 2 приведёна вычисленная в рамках модели диаграмма, выражающая зависимость концентрации хрома в обеих фазах рассматриваемого двухфазного трёхкомпонентного сплава от температуры (сечение фазовой диаграммы). Это один из результатов решения прикладной задачи в рассматриваемом частном случае. Греческими буквами а, а и а2 обозначены присутствующие в системе фазы. Исходный однородный сплав (а) становится неоднородным: он распадается при температурах ниже 973 К на две фазы — а1 и а2, которые отличаются концентрациями компонентов. Из диаграммы на рис. 2 можно видеть, что концентрация хрома в фазе а1 мала (а значит, она обогащена железом и кобальтом). Эта фаза обладает ферромагнитными свойствами. Фаза а2, наоборот, содержит большое количество хрома и парамагнитна. Благодаря своей фазовой структуре

сплавы на основе системы Fe-Cr-Co и обладают хорошим сочетанием магнитных и механических характеристик. Концентрация компонентов в фазе а1 для каждого значения температуры находится из решения задачи (5), а концентрация компонентов в фазе а2 - из соотношения (4).

0,0 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 0,55 0,60 0,65 0,70 75,0 0,80 0,85 0,90 0,95 1,00

Fe-Co Концентрация хрома хс,., ат. доли

Рис. 2. Результаты вычислений в рамках модели для рассмотренного примера сплавов Fe-Cr-Co c исходными концентрациями: Cr 0,16 и Co 0,15 (ат. доли)

Литература

1. Беляков Н.А., Винтайкин Б.Е. Термодинамическое моделирование формирования фазового равновесия в многокомпонентных сплавах, испытывающих расслоение с образованием магнитно упорядоченной фазы / Н.А. Беляков, // Металловедение и термическая обработка металлов. - 2011. - № 1 (667). - С. 41-46.

2. Kattner U.R. Thermodynamic Modeling of Multicomponent Phase Equilibria // JOM: Journal of the Minerals, Metals and Materials Society. - 1997, V.49. -№12. - P. 14-19.

3. Винтайкин Б.Е. Закономерности формирования структуры и магнитных свойств магнитно-жёстких сплавов на основе Fe-Cr-Co // Металловедение и термическая обработка металлов. - 1997. - № 12. - С. 12-14.

4. Аттетков А.В., Галкин С.В., Зарубин В.С. Методы оптимизации. - М.: Изд-во МГТУ им. Н. Э. Баумана, 2003. - 440 с.

5. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Д.. Приёмы объектно-ориентированного проектирования. Паттерны проектирования. - СПб.: Питер, 2010. - 366 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.