научная статья по теме ТЕХНОЛОГИИ ВЫЧИСЛИТЕЛЬНОГО ПРОГРАММИРОВАНИЯ Математика

Текст научной статьи на тему «ТЕХНОЛОГИИ ВЫЧИСЛИТЕЛЬНОГО ПРОГРАММИРОВАНИЯ»

— ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ —

УДК 681.3.06

ТЕХНОЛОГИИ ВЫЧИСЛИТЕЛЬНОГО ПРОГРАММИРОВАНИЯ

© 2011 г. В.П. Ильин*, И.Н. Скопин** * Институт вычислительной математики и математической геофизики СО РАН 630090 Новосибирск, пр-т Академика Лаврентьева, 6 **Новосибирский государственный университет, 630090 Новосибирск, ул. Пирогова, 2 E-mail: iskopin@gmail.com Поступила в редакцию 12.10.2010 г.

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

1. ВВЕДЕНИЕ

До недавнего времени задача планирования перехода к новому этапу технического обеспечения вычислений для математического моделирования ставилась лишь локально, для отдельных задач. Этого было достаточно, когда достижение сверхвысокого быстродействия рассматривалось как обособленная проблема конкретной прикладной или научно-исследовательской задачи, решаемой в конкретной вычислительной обстановке. Сегодня положение меняется. Необходимость решения междисциплинарных задач требует, чтобы обособленные проблемы конкретных областей выстраивались в системы для совместного моделирования. Часто такое интегрирование приводит к системам дифференциальных уравнений в частных производных (PDE -Partial Differential Equation), которые с трудом поддаются решению традиционными методами.

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

высокопроизводительных вычислений. К ним относятся кластерные системы, поддержка „облачных" вычислений, ОШБ-технологии, использование мощных графических ускорителей и др. В то же время, реальная производительность подобных систем зачастую оказывается далекой от тех возможностей, которые указывают разработчики оборудования, и она не обеспечивает текущие и перспективные потребности. По данным работы [1] из-за накладных расходов, связанных с межпроцессорным обменом и синхронизацией процессов, этот показатель не превышает 10 - 15% от пиковой производительности. Падение производительности вполне объяснимо несоответствием жесткости архитектуры многопроцессорных систем структурам реальных вычислительных задач. Как противовес жесткости на уровне оборудования сегодня предлагаются реконфигурируемые вычислительные системы, которые строятся на элементной базе программируемых логических устройств (ПЛИС) высокой степени интеграции [2]. Повышение производительности за счет наращивания вычислительных мощностей ставит задачу выбора сред выполнения

расчетов, а локальная адаптация обособленных моделей к каждой из таких сред не только нерациональна, но просто нереальна.

Одним из перспективных подходов к решению вычислительных задач является использование программного обеспечения как сервисов (SaaS - Software -as-a- Service), предоставляемых так называемыми Центрами Данных (Data Centers), которые самостоятельно обеспечивают задачи ресурсами с учетом распределения их в динамике выполнения вычислений [3]. В этом случае повышение производительности рассматривается как обеспечение роста эффективности в целом по Центру, а поэтому просто нет возможности рассчитывать на то, что вычисления моделей будет проводиться с использованием именно той архитектуры, на которую была ориентирована программа при ее составлении. И хотя метод адаптации алгоритмов и представления данных, основанный на низкоуровневой оптимизации, не исчерпал себя, с ростом сложности самих архитектур его область применения становится все более узкой. Низкоуровневая оптимизация -одна из задач компиляции, целью решения которой является объектный код, учитывающий не только особенности архитектур, но и динамические свойства обстановок, в которых будут производиться вычисления.

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

• во-первых, алгоритмическая оптимизация, цель которой - представить программу в виде, приспособленном к автоматической адаптации под архитектуру;

• а во-вторых, построение крупноблочных максимально оптимизированных фрагментов вычислений, пригодных для применения в разнообразных ситуациях.

Второй путь - это ничто иное, как развитие средств поддержки хорошо известного

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

Вместе с тем, методы программирования вычислительных задач и, в частности, математического моделирования, сегодня не приспособлены к нарастающей сложности архитектур, и, что не менее существенно, к простому переиспользованию. Эта проблема заставляет искать иные подходы, применять специальные инструменты поддержки разработки больших программных комплексов, которые нашли свое развитие в сферах системного и финансового программирования - так называемые CASE-средства (Computer Aided Software Engineering) [5]. К сожалению, подобные подходы и инструменты разрабатывались без учета специфики вычислительных задач, а потому непосредственный перенос их в эту сферу, как правило, не приводит к ощутимым результатам. Вычислительное программирование не стало областью, которую можно было бы с полным на то основанием называть технологией, реально повышающей производительность труда

программистов.

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

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

Как при решении любых сложных проблем и, в частности, как было при развитии традиционных технологий программирования, для разработки технологии вычислительного программирования требуется разделить проблему на относительно независимые части. Основой такой декомпозиции проблемы может служить жизненный цикл построения и использования математической модели в вычислительном эксперименте.

Соглашение о типовых этапах позволяет систематизировать методы решения, применяемые на каждом из них, и соответствующие этапам алгоритмы их реализации, фрагментированные по модульному принципу, в зависимости от их назначения, применяемых подходов, эффективности, ресурсоемкости, параллелизуемости и т.д. [6]. Соответственно, выделяются задачи поддержки жизненного цикла моделирования технологическими

средствами, которые можно охарактеризовать как формирование технологической среды разработки. По своей сути это возможности выбора подходящих средств для реализации сложившегося и достаточно хорошо себя зарекомендовавшего методического подхода к моделированию. Развитые библиотеки (например, [7]) всегда стремятся максимально обеспечить пользователей такими возможностями, и единственное, что требуется для превращения их в технологию, - это определение так называемых операционных маршрутов пользователей [8], прохождение которых, т.е. оптимальный выбор и корректное применение подходящих средств на каждом из этапов, последовательно и детерминировано ведет к решению задачи. Однако сложность и множество вариантов существующих и, надо полагать, будущих методов математического моделирования, взаимосвязанность решений, принимаемых на этапах, делает этот выбор трудным и неоднозначным, а подход в целом уводит от технологии в область искусства. Необходима ревизия подхода, которая на базе комплексного и всестороннего исследования проблематики математического моделирования в целом даст возможность создания технологических сред разработки, для

Для дальнейшего прочтения статьи необходимо приобрести полный текст. Статьи высылаются в формате PDF на указанную при оплате почту. Время доставки составляет менее 10 минут. Стоимость одной статьи — 150 рублей.

Показать целиком