Применение кластерных систем

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

Именно развитие кластерных технологий сделало высокопроизво­дительные вычисления широкодоступными и позволило самым разным предприятиям воспользоваться их преимуществами. Вот как распределяются области применения 500 самых мощных компьютеров мира: 44,3% — добывающая, электронная, автомобильная, авиационная и др. отрасли тяжелой промышленности и машиностроения, чуть более 20% — наука и образование, суперкомпьютерные центры. Более 18% приходится на погодные и климатические исследования, 7% — ядерные, космические, энергетические и военные государственные программы, 3,5% — финансовые компании и банки. Кроме того, в списке есть компании и организации, занимающиеся медициной и разработкой новых лекарств, компьютерной графикой, перевозками, торговлей, производством продуктов питания, консалтингом и государственным управлением.

Типичные задачи для кластерных систем.

Сегодня можно говорить о том, что кластерные системы успешно применяются для всех задач суперкомпьютинга — от расчетов для науки и промышленности до управления базами данных. Практически любые приложения, требующие высокопроизводительных вычислений, имеют сейчас параллельные версии, которые позволяют разбивать задачу на фрагменты и обсчитывать ее параллельно на многих узлах кластера. Например, для инженерных расчетов (прочностные расчеты, аэромеханика, гидро- и газодинамика) традиционно применяются так называемые сеточные методы, когда область вычислений разбивается на ячейки, каждая из которых становится отдельной единицей вычислений. Эти ячейки обсчитываются независимо на разных узлах кластера, а для получения общей картины на каждом шаге вычислений происходит обмен данными, распространенными в пограничных областях. Для практических расчетов (3D-анимация, крэш-тесты, разведка нефтяных и газовых месторождений, прогнозирование погоды) обычно используются кластеры из 10-200 узлов. При этом основная задача — обеспечение эффективной работы кластера с конкретным приложением. Хотелось бы обратить внимание на класс задач эффективно подвергающихся распараллеливанию:

Одномерные массивы.

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

Двумерные массивы.

При исполнении вложенных циклов обычно эффективно распараллеливаются самые внешние циклы. Однако практически все действия с матрицами (сложение, умножение, умножение на вектор, прямое произведение) могут быть выполнены на кластере. Многие алгоритмы линейной алгебры (но не все) могут быть эффективно распараллелены. Некоторые библиотеки подпрограмм (например, LAPACK) существуют для параллельных машин. Совершенно неэффективно использовать кластеры для работы с матрицами низкой размерности (например, 3x3). Но можно переписать алгоритм для одновременной обработки нескольких (к примеру, 1000) матриц - обращение, поиск собственных чисел и т.д. При увеличении размера матриц растет эффективность работы программы, но растет и размер требуемой памяти для хранения матриц.

Клеточные автоматы.

Во многих областях знания встречаются задачи, которые сводятся к вычислению эволюции объектов, расположенных в дискретных точках и взаимодействующих с ближайшими соседями. Простейшей и, наверно, наиболее широко известной такой задачей является игра "Жизнь". Можно так же привести в качестве примера модель магнетиков Изинга, представляющую собой набор спинов (элементарных магнитов), расположенных в узлах решетки и взаимодействующих только с ближайшими соседями. Алгоритм построения эволюции магнетиков Изинга будет во многом идентичен алгоритму игры "Жизнь".


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: