Термодинамическая модель фазового равновесия многокомпонентных сплавов на основе Fe-Cr-Co и схема организации вычислений в ее рамках - page 11

Термодинамическая модель фазового равновесия многокомпонентных сплавов …
11
Для перебора значений параметров
p
и формализации понятий
«задача» и «часть задачи» введена дополнительная абстракция – ите-
ратор, реализующая одноименный поведенческий шаблон объектно-
ориентированного проектирования [10]. В частности, с помощью
итераторов вычислительные потоки осуществляют перебор значений
параметров задачи. Поскольку параметры задачи существенно зави-
сят от ее предметной области, то для обеспечения независимости
планировщика от конкретной прикладной задачи каждый итератор
должен реализовывать некий общий интерфейс. Этот интерфейс
должен предоставлять операцию доступа к следующей атомарной
части задачи (в данном случае это отдельное значение вектора пара-
метров
p
), назовем ее
next
, а также операцию проверки наличия
оставшихся нерешенных частей задачи –
hasNext
. Планировщику по-
токов через ссылку на этот общий интерфейс передается итератор,
включающий в себя весь диапазон параметров, что позволяет от-
влечься от конкретной реализации итератора. Планировщик должен
как-то разбить итератор на части, т. е. создать несколько итераторов,
каждый из которых включает в себя некоторый поддиапазон пара-
метров из общего диапазона, заключенного в передаваемый плани-
ровщику итератор. Для облегчения этой задачи планировщику вклю-
чим в обобщенный интерфейс итератора операцию
split
, реализую-
щую функциональность быстрого разбиения диапазона на части в
заданном соотношении.
Предлагается следующая схема динамического планирования.
1. На этапе инициализации вычислений, перед их запуском, пла-
нировщик разбивает всю задачу на
n
равных порций с помощью
последовательного вызова операции
split
над переданным ему итера-
тором с соотношением 1/
n
, где
n
– число вычислительных потоков,
доступных планировщику (задается явно). Полученные итераторы
передаются всем вычислительным потокам во владение.
2. Потоки запускаются на счет.
3. Когда поток завершается, объект потока извещает планиров-
щика об этом (с помощью поведенческого паттерна Наблюдатель
[10]).
4. Планировщик последовательно просматривает все еще рабо-
тающие потоки в поисках потока, у которого на момент просмотра
остается больше всего работы. Для этого в интерфейс итератора
включена также операция
remaining
, возвращающая число атомар-
ных частей задачи, оставшихся в итераторе. Перед тем как получить
от каждого потока данные об оставшейся работе, планировщик уста-
навливает специальный флаг блокировки итератора в объекте вычис-
лительного потока. Сам вычислительный поток при этом специально
не приостанавливается и может продолжать вычисления. Приоста-
новка потока произойдет, если он попытается обратиться к своему
1...,2,3,4,5,6,7,8,9,10 12,13,14,15,16,17
Powered by FlippingBook