Перейти на главную страницу сайта


загрузка...

T++


T++
Семантика:

мультипарадигмальный: объектно-ориентированное, обобщённое, процедурное, метапрограммирование, функциональное, параллельное программирование

Тип исполнения:

компилируемый

Появился в:

1980-е

Автор(ы):

Институт программных систем РАН

Расширение файлов:

.tpp

Основные реализации:

проприетарная

Т++ — язык программирования указания необходимости параллельных вычислений с синтаксисом и семантикой, расширяющими язык C++, а именно расширением его несколькими словами, указывающими на возможность проведения параллельных вычислений. Само распараллеливание вычислений производится автоматически библиотекой времени исполнения интегрированной средой Т-системы во время выполнения программы, то есть динамически, которая расширяет интегрированную среду C++ Microsoft Visual Studio патчем.[1] Для указания необходимости распараллеливания вычислений функция, используемые её внешние переменные и указатели помечаются соответственными ключевыми словами. При отсутствии явных побочных эффектов, компилятор оформляет функцию не как элемент процедурного программирования, а функционального, то есть чистую (не имеющих побочных эффектов). Если присутствуют явные побочные эффекты, например, использование ввода/вывода, то компилятор, отследив их, выдаёт сообщение об ошибке.

Содержание

  • 1 Семантика
    • 1.1 Пример программы
  • 2 Препроцессор
  • 3 Компилятор
  • 4 Т-Система
  • 5 История
  • 6 Основные идеи Т-Системы
  • 7 Примечания
  • 8 Литература
  • 9 Ссылки
    • 9.1 Проекты
    • 9.2 Описание Т-системы

Семантика

Пример программы

Пример программы вычисления числа Фибоначчи:

tfun int fib(int n) {
  return n < 2  n : fib(n-1) + fib(n-2);
}
 
tfun int main (int argc, char *argv[]) {
  if (argc != 2) { printf("Usage: fib <n>\n"); return 1; }
  int n = atoi(argv[1]);
  printf("fib(%d) = %d\n", n, (int)fib(n));
  return 0;
}

Как видно из примера язык Т++ внёс незначительные изменения в синтаксис языка С++, а именно: указатели tfunна разрешение параллельных вычислений. При всей неэффективности такой реализации вычисления -го числа Фибоначчи, данная программа показывает не только простоту и наглядность Т-Системы, но и демонстрирует ускорение при выполнении на нескольких процессорах, причём программисту не надо знать об их количестве и заниматься распределением полезной нагрузки между ними.

Препроцессор

Этот раздел не завершён.
Вы поможете проекту, исправив и дополнив его.

Компилятор

Этот раздел не завершён.
Вы поможете проекту, исправив и дополнив его.

Т-Система

Т-система предоставляет интегрированную среду разработки посредством расширения среды С++ Microsoft Visual Studio патчем. Среда разработки Т-системы предоставляет возможность включить препроцессор фильтрующий исходный код Т++ (преобразует исходный код Т++ в С++) для прогона программы в последовательном режиме (для отладки кода С++). После отладки в последовательном режиме можно производить отладку исходного кода Т++, а затем его компиляцию: производится оптимизация и преобразование исходного кода, подключаются библиотеки времени исполнения параллельных вычислений[2] и производится компиляция кода С++. Т-Система — средство автоматического динамического распараллеливания программ, призванное облегчить процесс разработки и использования сложных параллельных программ и их эффективное использование на различном, в том числе и неоднородном оборудовании. Разработана в ИПС РАН, в настоящее время развивается в ИПС РАН и МГУ.

OpenTS (Open T-System, Т-система с открытой архитектурой) — это современная реализация Т-системы. Она обеспечивает автоматическое динамическое распараллеливание программ и предоставляет среду исполнения для языка программирования высокого уровня Т++, который является параллельным диалектом языка Си++[3].

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

OpenTS была успешно опробована на широком круге задач, и на вычислительных установках различного масштаба: от многопроцессорных PC до вычислительных комплексов с различной архитектурой и разной мощности (различные многопроцессорные Windows/Linux Intel/AMD-кластеры, терафлопная российская установка МВС-1000М, и др.). OpenTS поддерживает широкий спектр параллельных платформ: многоядерные процессоры, SMP-системы, кластеры, метакластеры и GRID-системы.

История

Идея Т-Системы зародилась в конце 1980-х годов в Институте Программных Систем РАН [1]. Основной идеей стало введение понятия Т-функциий как поставщиков так называемых неготовых значений, что позволяло выполнять одновременно несколько Т-функций на разных процессорах и за счёт этого достигать параллелизма.

В 1998 году проект обрёл второе рождение с активным участием МГУ. В 2000 г. в рамках российско-белорусского проекта "СКИФ" была начата работа над новой реализацией Т-Системы под кодовым названием GRACE. Однако уже после первого года разработки обнаружились существенные недостатки данной реализации. Плохая структура системы, отсутствие чёткой идеологии и архитектуры приводили к многочисленным ошибкам, зависаниям, переполнениям стека. Но самое главное, что многочисленные попытки разрешать проблемы зачастую снижали скорость и эффективность работы уже написанных программ, а в некоторых случаях делали их неработоспособными.

В 2002 году было принято решение о написании новой реализации Т-Системы. Она получила название OpenTS, или Т-система с открытой архитектурой. В отличие от двух предыдущих реализаций, в OpenTS изначально закладывались определённая архитектура, основанная на опыте разработки предыдущих вариантов системы. OpenTS успешно прошла государственные испытания по проекту "СКИФ" на соответствие критериям программного обеспечения кластерного уровня.

В настоящее время в МГУ ведётся работа над двумя независимыми ветками OpenTS под условным названием NewTS.

Основные идеи Т-Системы

1. Функция, описанная с ключевым словом tfun(так называемая Т-функция), является основным объектом (гранулой) параллелизма. Запись вида:

tfun int f(int a,double b)

описывает Т-функцию с двумя аргументами и одним выходным значением.

2. Вызов Т-функции не вызывает блокирование программы до завершения работы Т-функции. Результатом вызова является неготовое значение (Т-значение).

3. Неготовое значение может быть присвоено Т-переменной. Операция присваивания Т-переменной неготового значения не вызывает блокирование программы. Т-переменная описывается с указанием ключевого слова tval(а не tvar, это результат следования традиции, соответствующий класс ядра OpenTS называется TVar). Запись

tval int x;

описывает Т-переменную типа int.

4. По окончании вычисления Т-функции соответствующее неготовое значение становится готовым и далее повторяет поведение обычного значения базового типа.

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

Примечания

  1. OpenTS. Руководство программиста
  2. Возможно применение статических библиотек параллельных вычислений, таких как: ScaLAPACK,
  3. OpenTS :: Home

Литература

  • Описание языка Т++ от ИПС РАН
  • Описание языка Т++ от проекта «Ботик»

Ссылки

Проекты

  • Проект OpenTS
  • Проект СКИФ
  • Проект СКИФ-ГРИД
  • Институт программных систем РАН

Описание Т-системы

  • Применение T++
  • С.М. Абрамов, В.А. Васенин, В.В. Корнеев, А.А. Московский, В.А. Роганов Организация распределенной общей памяти в Т-системе с открытой архитектурой (рус.) // ИПС РАН, ЦНТК. — 2003. — С. 13.



Источник: Русская википедия 2012

Вы можете разместить ссылку на этот материал у себя на сайте, блоге или форуме

HTML-cсылка на публикацию
BB-cсылка на публикацию (для форумов)
Прямая ссылка на публикацию


Похожие статьи
Похожих статей не найдено.
Это интересно! Площадь Арбатские Ворота   Дуглас Керк   Дружинин, Александр   гадательно   Сын Дракулы (фильм, 1943)   
Универсальная энциклопедия 2012
Карта сайта
Страница создана за 0.023048 сек. Всего документов включено в базу знаний: 5150576