Высокопроизводительные парал. вычисления на кластерных системах. Воеводин (2005) (1186026), страница 48
Текст из файла (страница 48)
В качестве коммуникационной среды используется библиотека MPICH 1.2.5 свободно распространяемая Техническим университетом г. Аахен, Германия.Рис. 1Производительность кластера определялась при решении системыуравнений утилитой Linpack пакета PLAPACK в зависимости от размерности решаемой задачи, точности вычислений и степени оптимизации вычислений под тип используемого процессора. При использовании всей доступной оперативной памяти максимальная производительность кластера составляет 15,05 гигафлоп для четырехбайтовойточности решения и 8,11 гигафлоп для восьмибайтовой точности. Пиковая производительность кластера (сумма производительностей всехузлов кластера) при использовании для вычислений 8 узлов составит17,84 гигафлоп для четырехбайтовой точности решения и 11,04 гигафлоп для восьмибайтовой.ПримерВ качестве примера использования описанного программно-аппаратного комплекса приведем результаты расчетного моделированиякософронтального удара с перекрытием 40% в деформируемое препятствие на скорости 64 км/ч автомобиля «Ока».
Расчетная модель автомобиля включала модель кузова, силового агрегата и ходовой части,двери задка и запасного колеса. В расчетную модель не включались237боковые двери и капот. Их масса считалась сосредоточенной в узлахнавески. Для учета влияния боковых дверей на деформации кузова ограничивались взаимные перемещения некоторых точек дверных проемов. Панели кузова, подрамник и колеса моделировались конечнымиэлементами оболочки в формулировке Belytschko-Tsay. Массы рядаагрегатов и полезная нагрузка (массы водителя, пассажиров, багажа ипр.) считались сосредоточенными в узлах. При моделировании элементы подвески (рычаги, пружины и амортизаторы) заменялись жесткимибалочными элементами.
Для моделирования двигателя, КПП и ступицс тормозами использовался сплошной 3D-элемент. Всего модель автомобиля насчитывала более 46000 элементов. Вид конструкции в деформированном состоянии после удара показан на рис. 2.Рис. 2На рис. 3 приведено время решения задачи (t) в зависимости от количества использованных узлов (N) кластера.t1600Кластер Арко-9А22001200Линейное ускорение80040002381234Рис. 356NСплошная линия соответствует линейному ускорению.Литература1. Бураго Н.Г., Кукуджанов В.Н. Обзор контактных алгоритмов// МТТ,2005, №1.
С. 45–87.2. Hallquist J.O. (1977) A numerical procedure for three-dimensional impact problems. Proceedings of the ASCE Fall Convention, San Francisco. Р. 17–21.3. Zhong Z.H. (1988) On contact-impact problems, doctoral thesis, Div.Solid Mechanics and Strength of Materials. Dept. Mech. Eng., Linkoping University, Linkoping.4. Oden J.T. and Martins J.A.C. (1985) Models and computational methodsfor dynamic friction phenomena, Сотр.
Meth. App. Mech. Eng. Р. 527–634.5. Oden J.T. and Pires E.B. (1983) Algorithms and numerical results for finite element approximations of contact problems with non-classical frictionlaws, Computers and Structures, 19. Р. 137–147.6. Park K.C. and Underwood P.G. (1980) A variable-step central differencemethod for structural dynamics analysis. Part I. Theoretical aspects. ComputerMethods in Applied Mechanics and Engineering, 22:241–258.7. Belytschko T. and Mullen R.
(1977) Explicit integration of structuralproblems, in Finite Elements in Nonlinear Mechanics, (ed.) by P. Bergan et al.Р. 672–720.T# - СРЕДА ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ ДЛЯПЛАТФОРМЫ MICROSOFT .NETА.М. ЧудиновИПС РАН, Переславль-ЗалесскийВведениеПлатформа .NET содержит богатые и гибкие библиотеки работы спотоками обеспечивающие эффективную реализацию многопоточныхприложений. Однако эти библиотеки могут быть использованы лишьна симметричных мультипроцессорах (SMP) имеющих очень ограниченную масштабируемость. Для более крупных систем широко известных как SMP кластеры приходтся исользовать другие подходы, которые в основном более сложны в реализации и требуют существенногоизменения кода последовательных программ.Данная работа представляет расширение платформы .NET (T#)реализующее концепцию автоматического динамического распаралле239ливания программ. Расширение сочетает простоту реализации с хорошей масштабируемостью. Параллельных программ, что может существенно облегчить использование кластеров и открыть кластерную архитектуру для целого ряда новых пользователей и приложений.Концепция автоматического динамическогораспараллеливания программВсе современные технологии распараллеливания призваны автоматизировать переход от программы, записанной на языке, удобномдля человека, к параллельному алгоритму, который при соответствующей аппаратной поддержке позволяет получить выигрыш в производительности по сравнению с последовательным выполнением аналогичной программы на монопроцессоре.В силу сложности этой задачи, на пути распараллевания возникают те или иные проблемы, и никем пока не предложен универсальныйспособ для их решения.
Различные подходы разнятся своими ключевыми идеями, которые в совокупности и обуславливают сильные ислабые стороны каждой конкретной технологии, и как следствие этого,имеют ту или иную область своего эффективного применения.В данной работе рассматривается подход автоматического динамического распаралеливания программ, при котором процесс вычислений представляется в виде графа, вершинами которого являются вызванные функции, а ребрами – отношения «поставщик-потребитель»между вызванными функциями.Заметим, что для обеспечения детерминированости вычислений,необходимо выполнение требования отсутствия сторонних эффектов увызываемых функций.
Для таких функций можно реализовывать вызовпо состоянию и мемоизацию. Под вызовом по состоянию понимаетсято, что результатом работы функции может быть некоторая фиктивнаявеличина, которая означает, что над глобальными данными произведено некоторое преобразование. Мемоизация – возможность запоминатьрезультаты вычислений функций и затем при повторных вызовах отодних и тех же аргументов просто брать соответствующее значение изтаблицы.В качестве вычислительной модели при этом может быть использован алгоритм параллельной редукции графов При редукции графапредставляющего вычисление, в силу прозрачности ссылок, присутствующие в этом графе вершины будут вычисляться с одинаковым результатом независимо от времени и места вычисления. Это позволяетвычислять такие вершины одновременно на отдельных процессорах,240каждый из которых может сгенерировать новые процессы.Наиболее явно преимущества описаного подхода проявляются назадачах, в которых:• априорно (до начала счета) неизвестно, как распараллелить работу;• вычислительная схема близка к функциональной модели, то естьможет быть эффективно представлена с помощью совокупности функций, рекурсивно вызывающих друг друга.T# - система автоматического динамическогораспараллеливания для платформы Microsoft.NETВ данной работе рассматривается реализация расширения платформы Microsoft.NET, реализуещего описаный выше подход.Модель вычисления.
В процессе описания T# мы будем использовать следующие понятия:Поставщик – метод возвращающий данные.Потребитель – метод использующий данные полученые от поставщика.Отношение «поставщик-потребитель» – связь между двумяметодами один из которых (поставщик) возвращает данные, а второй(потребитель) использует их.Граф вычислений – ориентированый граф, вершинами которогоявляются поставщики и потребители, а ребрами – отношения «поставщик-потребитель».Заметим, что поставщик может имет несколько потребителей.
Приустановлении отношения «поставщик-потребитель» потребитель получает неготовое значение. При вычислении вершины графа обращение кнеготовому значению ведет к приостановке вычисления данной вершины. Когда поставщик заканчивает вычисление, он информируетвсех потребителей, при этом возобновляется приостановленое вычисление соответвующих вершин.Синтаксис и семантика. T# использует следующие основныеструктуры:• T-метод• T-объектСинтаксически T# обеспечивает работу с данными структурами засчет использования .NET аттрибутов:public class MyObj {[parallel]virtual public object m1() {…}}241Т-метод описывается с помощью указания атрибута [parallel], приэтом существует ограничение – все Т-методы должны быть виртуальными, а возвращаемое значение должно иметь ссылочный тип данных.Т-объекты создаются прозрачно в виде результатов возвращаемыхТ-методами.При вызове Т-метода создается новый узел графа вычислений, приэтом вычисление текущей вершины не останавливается, возвращаетсяТ-объект с неготовым значением.При попытке Т-метода обратиться к переменной содержащей неготовое значение процесс вычисления останавливается, до тех пор,пока значение не станет готовым.Создание объекта содержащего Т-методы должно осуществлятьсяс помощью вызова метода CreateInstance служебного объекта TProxyFactory:MyObj obj =(MyObj)TProxyFactory.CreateInstance(typeof(MyObj),new object[]{});,где первый аргумент метода – тип cоздаваемого объекта, а второй– аргументы конструктора.Ниже приведен пример программы вычисляющей числа фиббоначи (неэффективная реализация):public class Fib {[Parallel]public virtual object Fib(int n) {if(n <= 1) {return n;} else {object n1 = Fib(n-1);object n2 = Fib(n-2);return (int)n1 + (int)n2;}}}public class CMain {static void Main(string[] args) {Fib f =(Fib)TProxyFactory.CreateInstance(typeof(Fib), new242object[]{});(int)f.Calc(5));}}Console.WriteLine("Result: " +Архитектура и реализация T#.
Архитектура T# состоит из нескольких уровней:1. Пользовательский уровень – представляет собой T# программы.2. Прокси-уровень – скрывает от пользовательского уровня уровень суперструктуры.3. Т-суперструктура – содержит описание основных Т-структур иреализует Т-семантику (алгоритм параллельной редукции графа вычисления программы, логику работы с готовыми и неготовымизначениями)4. Т-runtime (среда исполнения) – содержит низкоуровневые детали реализации, такие как транспортный уровень, планировщик задач.Пользовательский уровеньСостоит из атрибутов:[parallel] – для описания Т-методов[memoizable] – помечает методы к которым можно применять мемоизациюИ интерфейса доступа к Прокси-уровню, с единственным методомобеспечивающем создание экземляров объектов содержащих Т-методыTProxyObject.CreateInstance(System.Type instanceType, object[] constructorArguments)Прокси-уровеньОбеспечивает прозрачный доступ из Пользовательского уровня куровню Т-суперструктуры.