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

ИПМ им. М.В.Келдыша РАН, Москва
ФГУП «НИИ «Квант»», Москва
НИИ МВС ЮФУ, Таганрог
ИММ УрО РАН, Екатеринбург

  • Что такое гибридная вычислительная система?
  • Гибридная вычислительная система – это параллельная вычислительная система, в которой, наряду с универсальными процессорами, используются различные типы ускорителей, или сопроцессоров, обладающих нестандартной архитектурой (векторной, мультитредовой, реконфигурируемой под конкретную задачу и т. п.). В идеале должна снабжаться также нестандартной, усиленной системой межузловых коммуникаций.
  • Зачем делать машины с новой архитектурой? Ведь программировать для них будет , как минимум, непривычно, а скорее всего – трудно.
  • Старая архитектура, как способ организации большого количества транзисторов в суперкомпьютер, во многом изжила себя.

    За 60 лет, прошедших с появления «обычного», точнее, фоннеймановского, процессора, число транзисторов, из которых строится суперкомпьютер, выросло примерно в миллиард раз. Телеги с тысячей колес не бывает.

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

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

  • В чем выражается неадекватность старой архитектуры современному числу транзисторов?
  • Нарастает число «системных узких мест», снижающих к.п.д. приложений. У однопроцессорных (или хорошо распараллеленных) приложений на современных процессорах он редко достигает даже 10% от пика. Многоядерность значительно ухудшает ситуацию, по крайней мере, при использовании традиционного стиля программирования. Ядра конкурируют за общую память, мешая работать друг другу.

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

    Способ этой организации надо менять. Это и есть новая архитектура.

  • Зачем строить машину как гибридную, не разумнее ли просто строить «с нуля» принципиально новые машины?
  • Безусловно, нет. Создание «с чистого листа» принципиально новой машины – очень долгий и дорогой путь. К счастью, этому пути есть альтернатива.

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

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

  • О каких конкретно изменениях в готовых компонентах и способах их соединения между собой идет речь?
  • •  Периферийный интерфейс PCI Express позволяет легко и дешево связывать между собой как устройства внутри компьютера, так и целые компьютеры с такими высокими скоростями и такими низкими задержками, какие еще недавно были по силам разве что фирме Cray.
    •  В геометрической прогрессии нарастает выпуск недорогих вычислительных ускорителей различных новых архитектур (IBM Cell, NVIDIA CUDA GPGPU и других).
    •  Все больше появляется ускорителей на базе программируемой логики, реконфигурируемых под конкретную задачу, совершенствуются способы их применения.

    Важный промежуточный вывод: проблемы добыть и/или изготовить исходные компоненты для нового суперкомпьютера не существует.

    Напротив, существует проблема научиться строить из таких компонентов суперкомпьютеры общего назначения и грамотно использовать их.

    Нет дефицита «железа», есть дефицит идей.

    Способ объединения компонентов с новой архитектурой в систему - гибридный вычислительный кластер.

    В основе узла такого кластера – универсальный компьютер массового выпуска.

    В состав узла входит также хотя бы один ускоритель новой архитектуры, например, GPGPU или реконфигурируемый ускоритель на программируемой логике.

    Весьма желательно также усилить систему межузловых коммуникаций, заменив локальную сеть, например, системой прямой коммутации каналов PCI Express с получением взаимного прямого доступа узлов в память друг друга.

    Пример такой машины – «МВС-экспресс», совместная разработка ИПМ им. М. В. Келдыша и ФГУП «НИИ «Квант»». Пиковая производительность – 2Тфлопс.

    макет «МВС-экспресс»
  • А причем тут мы? И как такой системой пользоваться?
  • Вопросы заданы от имени типичного пользователя параллельной вычислительной системы – специалиста по аэродинамике, геофизике, химии и т. п. От имени того, кто не строит новые машины, а использует их.

    Ответы на эти два вопроса взаимосвязаны. Попробуем их дать.

    Гибридной машине – гибридное программирование.

    Разработка программ для ускорителей нетрадиционной архитектуры, в особенности – для реконфигурируемых, действительно, дело непростое. Но и с утверждением, что «для использования таких машин пользователь должен стать схемотехником», хотелось бы поспорить. Покажем, что в действительности дело обстоит в точности наоборот.

    Ключ к решению проблемы – в гибридном характере машины. При переходе на гибридную машину процентов 95, если не больше, исходного текста программы остается написанным на обычных языках и для «обычного» процессора. На ускорителе размещаются лишь очень небольшие фрагменты кода, над которыми надлежит поработать профессионалам.

    Гибридное программирование – это работа с алгоритмом, а не с сопроцессором.

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

    Сложнее вопрос о том, как эти части выделить в программе, что именно выделять и как.

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

    Для выполнения этой работы бессмысленно «становиться схемотехником». Это - работа с алгоритмом в содержательных терминах, никто, кроме математика, знающего алгоритм, выполнить ее не в силах.

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

  • Я не хочу этим заниматься. Я подожду появления более быстрых процессоров.
  • Ждать придется долго. Тактовая частота отдельных ядер процессоров, продаваемых в магазине, не растет уже 5 лет. Растет лишь число ядер.

    Еще быстрее растет склонность этих ядер мешать друг другу при интенсивной совместной работе.

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

  • Так как же все-таки записывать эти самые вычислительные ядра для ПЛИС, на каком языке?
  • В формирующемся сегодня списке исполнителей уже имеется целый ряд научных коллективов, способных решить эту задачу, разработать и опробовать необходимые технологии.

    Очень важно, чтобы им было, что записывать и опробовать. Усилия пользователей по переработке алгоритмов – ключевая часть работы, без которой все остальное теряет смысл.

Вопросы – по адресу inform@kiam.ru

 
 
 
 
 
 
 
 
  Тел. +7(499)220-79-72; E-mail: inform@kiam.ru