Термодинамическая модель фазового равновесия многокомпонентных сплавов …
9
решения других задач) при ее проектировании выбран объектно-
ориентированный подход. В системе выделены три основных незави-
симых модуля:
модуль М
1
, реализующий модель прикладной задачи (в данном
случае это численная модель сплава);
модуль М
2
, осуществляющий решение прикладной задачи (в дан-
ном случае это локальная минимизация некоторой целевой функции);
модуль М
3
, организующий параллельные вычисления для ре-
шения прикладной задачи.
Связь между этими модулями осуществляется с помощью общих
интерфейсов, что обеспечивает слабое зацепление между ними и
возможность их использования независимо друг от друга, так как при
таком подходе реализация каждого модуля не зависит от реализаций
других.
Как видно из представленной декомпозиции задачи, уровень аб-
стракции возрастает от модуля М
1
к модулю М
3
: модуль М
1
пред-
ставляет собой формулировку конкретной прикладной задачи, отра-
жающую ее конкретную предметную область и сам по себе ничего не
решает (это некоторая численная модель); область применения моду-
ля М
2
может не ограничиваться моделью, представленной в М
1
, и
может включать в себя достаточно широкий класс задач локальной
оптимизации; но задачи оптимизации, решаемые модулем М
2
, – это
лишь частный случай задач, решение которых может осуществлять
модуль М
3
. Кроме того, модуль М
1
инкапсулирует физическую со-
ставляющую данной работы, в модуле М
2
в основном сосредоточена
вся математика и численные методы, а модуль М
3
заключает в себя
программирование параллельной обработки данных.
Выбранная SPMD-модель организации параллельных вычисле-
ний хорошо соответствует архитектуре вычислительных систем с
общей памятью. Подобные вычисления удобно проводить, в частно-
сти, и на широко распространенных в настоящее время настольных
вычислительных машинах на базе многоядерного центрального про-
цессора с 80 x 86-совместимой архитектурой. В таких системах в ка-
честве сущности операционной системы, в рамках которой осу-
ществляются вычисления, в данном случае лучше использовать
потоки выполнения уровня ядра операционной системы (ОС), рабо-
тающие в рамках единого процесса [9]. Каждый поток может практи-
чески полностью независимо от других производить вычисление
функции (10) для заданного набора параметров
p
задачи.
Особенностью рассматриваемой прикладной задачи является то,
что при разных значениях параметров
p
задачи расчеты в рамках
второго модуля могут занимать достаточно различающиеся интерва-
лы времени. Причем априорно невозможно установить, сколько вре-
мени будет выполняться какая-либо из частей задачи. Впрочем, такая