BC/NW 2011; №1 (18):2.2
Отображение функциональных описаний алгоритмов на
архитектуры вычислительных систем
А.А. Кондрат, И.И. Ладыгин
Московский энергетический институт (Технический университет)
Поиск минимального
времени решения прикладных задач при оптимальном использовании имеющихся в
распоряжении пользователя вычислительных ресурсов является очень дорогим и
трудоёмким процессом, так как часто требует выделения вычислительных ресурсов в
монопольное распоряжение пользователя и связан со сложностями написания
параллельных программ. В связи с этим создаются программные продукты для
моделирования работы реальных высокопроизводительных вычислительных систем (ВС) на персональном компьютере, с помощью которых можно с
достаточной точностью спрогнозировать затраты на решение необходимых прикладных
задач: время решения, загрузка узлов ВС и т.д.
Существенным недостатком
многих программных моделей для симуляции работы высокопроизводительных систем и
суперкомпьютеров, существующих в настоящее время, обычно является то, что они учитывают
только особенности конкретной вычислительной машины или класса машин.
Использование подобных моделей для симуляции работы гибридных систем, которые
обычно доступны пользователям, ограничено или вообще не представляется
возможным.
Целью данного проекта
является разработка универсальной программной объектно-ориентированной Java-модели для симуляции работы вычислительных
систем кластерного типа, включающей в себя 3 основные составляющие: граф потока
данных прикладной задачи, независимый от конкретной платформы вычислительной
системы, граф потока данных с характеристиками, учитывающими особенности
конкретной платформы, а также описание самой платформы [1]. Программная модель
построена на основе программного Java-framework, разработанного на кафедре
Архитектур вычислительных систем Технического университета Ильменау
(Германия) и подробно описанного в [2].
Созданная
для работы с данной моделью программа-планировщик реализует отображение графа
потока данных, генерируемого из задаваемых пользователем функциональных
описаний алгоритмов (математических формул и MDL-файлов MATLAB Simulink), на ресурсы конкретной
вычислительной системы, задаваемой пользователем, что является симуляцией
выполнения графа на узлах данной ВС.
Граф потока данных
генерируется программой с помощью специальных подпрограмм – парсеров,
строящихся на основе регулярных грамматик и грамматических правил. Граф потока
данных является представлением задачи, выполняемой на ВС,
в котором явно выражены зависимости по данным между отдельными операциями.
Описание вычислительной
системы задается с помощью древовидной структуры ссылок между объектами,
характеризующими процессорные элементы, шины и элементы памяти. Все ресурсы
вычислительной системы имеют ряд индивидуальных характеристик.
Пользователь производит
многократное моделирование выполнения графа задачи на ВС,
изменяя стратегии назначения и параметры самой ВС, с целью выбора оптимального
решения: минимального времени выполнения задачи с одновременным использованием
минимального числа доступных ресурсов заданной ВС.
После нахождения
оптимального, по мнению пользователя, отображения, в дальнейшем с учётом
заданного графа задачи и ВС может быть сгенерирован
код на языке параллельного программирования (MPI и др.) для его выполнения на реальной ВС.
Литература
1.
Kondrat Andrey: Mapping von Algorithmen und funktionalen
Systembeschreibungen auf Architekturen unter Nutzung von Optimierungsstrategien
// Technische Univeristät Ilmenau, Masterarbeit,
2010.
2.
Marcus Müller: Transformation von modellbasierten
Systembeschreibungen. Entwurf und Implementation
eines Java-Frameworks // Technische Univeristät
Ilmenau, Diplomarbeit, 2004.