РОССИЯ 
Проект: ИПС РАН/Т-система

Т-система: система программирования и run-time среда, реализующие автоматическое динамическое распараллеливание программ

Основные разработчики
ИПС РАН (Институт программных систем РАН), ИЦМС (Исследовательский центр мультипроцессорных систем)
директор центра, д.ф.-м.н., Абрамов Сергей Михайлович, с.н.с. Адамович Алексей Игоревич
Тип (теория, программная система, приложение, аппаратные средства) проекта
Программная система: система программирования и run-time среда
Краткое описание
Т-система реализует принцип автоматического динамического распараллеливания программ за счет использования функциональной парадигмы (программы для Т-системы определяют набор чистых--без побочного эффекта--функций) и особой модели вычисления функциональных программ: процесс вычисления--это процесс автотрансформации вычислительной сети.

Т-ядро (run-time support компонента Т-системы) реализует поддержку вычислительной модели "автотрансформация вычисляемой сети" -- поддерживает основные Т-структуры данных и основные операции модели вычисления:

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

Разработка программ для исполнения в среде Т-системы: сегодня нами используется язык t2cp (в дальнейшем возможна реализация других языков для программирования в Т-системе)--расширение языка С небольшим числом новых конструкций (Т-конструкций):

  • описание заголовка Т-функций--определяет имя Т-функции, список имен ее аргументов, результатов и вспомогательных Т-переменных;
  • операторы передачи Т-значений (в том числе--неготовых): присваивание Т-переменной нового Т-значения; выдача одного из результатов Т-функции;
  • оператор вызова Т-функции--приводит к порождению процесса;
  • операции над Т-структурами--конструкторы и селекторы для Т-структур: операции работы со списками и массивами Т-звеньев; операции размещения С-данных в Т-структурах и извлечения С-данных из Т-структур.

Особенности программирования: Т-программа определяет набор чистых Т-функций.  Однако в рамках тела каждой функции, программист может использовать любые С-конструкции и С-данные, использовать стиль программирования , к которому он привык--например, императивный стиль.  При этом, должен отсутсвовать побочный эффект у Т-функций: все данные для вычислений в теле функции должны быть получены явно через ее аргументы, все результаты вычисления--переданы через ее выходы/результаты.

Язык t2cp поддержан препроцессором, преобразующим входную Т-программу в программу на языке С (перечисленные выше Т-конструкции заменяются на соответствующие вызовы Т-ядра; остальная часть программы оставляется без изменения).   Результат препроцессирования обрабатывается стандартным в ОС Linux компилятором языка С и собирается с библиотеками Т-ядра в исполняемый файл, пригодный для запуска на любой установке вида "TCP/IP-сеть Linux-машин" (содержащей любое число моно- или SMP-узлов сети, любое число процессоров...).

При запуске исполняемого файла считывается конфигурационный файл с перечислением разрешенных для использования в данном запуске программы вычислительных ресурсов: IP-адресов и характеристик (монопроцессор или SMP-мультипроцессор) узлов сети. За счет механизма rcp/rsh на указанных узлах вычислительной установки запускаются экземпляры Т-ядра, образующих общую среду исполнения Т-задачи.  Эта совокупность экземпляров Т-ядра автоматически (без специальных спецификаций со стороны программиста) в динамике (во время выполнения Т-программы) поддерживает все операции, связанные с параллельным выполнением Т-программы:

  • поиск готовых к исполнению Т-процессов и распределение их по свободным процессорам;
  • передачу данных (аргументов и результатов) между Т-процессами;
  • синхронизацию Т-процессов по данным (синхронизацию Т-процесса по готовности тех данных, которые действительно потребовались как значения для продолжения выполнения Т-процесса)
Область применения
Сегодня встречаются программы/задачи (из таких областей, как компьютерная алгебра, интеллектуальные системы, моделирование сложного поведения и др.), которые
  • связанны с большим объемом обработки данных (то есть, требуют большой производительности вычислительной установки)
  • имеют сложную логику развития процесса вычисления;
  • связанны с обработкой нечисловых данных или данных, имеющими сложное (не матричное) представление (например, динамически порождаемые списки, деревья, графы и т.п.);
  • обладают потенциальным параллелизмом, однако этот параллелизм скрыт до времени исполнения программы и проявляется только в динамике.

Именно на такой класс задач--задач с динамическим (скрытым до момента запуска программы) параллелизмом--и была первоначально ориентирована разработка.   Уточнение класса задач, для которых использование Т-системы целесообразно, является предметом дальнейших исследований и во многом будет определяться результатами использования Т-системы для решения практических задач (см. URL-ссылки на отчеты о решении задач в Т-системе).

Связь с другими проектами/платформами
Т-система разработана для платформ класса "IP-сеть рабочих станций (Intel, PC, mono или SMP) с ОС Linux" (в дальнейшем возможен перенос на другие платформы).
Завершенность проекта
Реализована и используется для разработки приложений. Завершены академичeские исследования, Т-система и Т-язык (t2cp)--реализованы.  На t2cp написан ряд задач--как демонстрационных, так и практически значимых--имеющих различную алгоритмическую организацию и относящихся к различным областям.   В результате выполнения всех этих задач достигался высокий уровень распараллеливания программ Т-системой.

Для выполнения приложений используется мультикомпьютер, реализованный (ИПС РАН) как быстрая локальная сеть (Switched Fast Ethernet 100 Mbps) из 9 различных Linux-машин, в том числе мультипроцессорных SMP-компьютеров двух типов:

  • шестипроцессорные ALR 6x6 (6xPentium Pro/200)--2 шт.
  • двухпроцессорные рабочие станции класса IBM PC (2xPentium II/266)-- 5 шт.

Всего в данной установке 24 процессора Pentium Pro/200 и Pentium II/266, 1,408 Mb оперативной памяти и 70.4 Gb дисковой памяти. Суммарная теоретическая пиковая производительность установки--5.6GFlops, стоимость установки--ок. $55,000.

Контакты, ссылки на доп. информацию
Абрамов Сергей Михайлович, тел.: +7(08535)98.031, +7(08535)98.032, e-mail: abram@botik.ru
Адамович Алексей Игоревич, тел.: +7(08535)98.042, lexa@adam.botik.ru
См. также:
  • Список публикаций проекта и ссылки на публикации в электронном виде: http://www.botik.ru/~abram/ts-pubs.html
  • Подробное описание Т-системы и языка t2cp, примеры Т-программ и технические отчеты по экспериментам с Т-системой: ftp://ftp.botik.ru/pub/local/Sergei.Abramov/T-system/
  • Евсеенко В.А., Иванов М.Н., Радыгин В.Ю. "Адаптация системы параллельных вычислений T-System к компьютерной сети МГИУ." (Курсовая работа по функциональному программированию).

  • © Лаборатория Параллельных Информационных Технологий, НИВЦ МГУ
    Rambler's Top100