T++
Т++ — язык программирования указания необходимости параллельных вычислений с синтаксисом и семантикой, расширяющими язык C++, а именно расширением его несколькими словами, указывающими на возможность проведения параллельных вычислений. Само распараллеливание вычислений производится автоматически библиотекой времени исполнения интегрированной средой Т-системы во время выполнения программы, то есть динамически, которая расширяет интегрированную среду C++ Microsoft Visual Studio патчем.[1] Для указания необходимости распараллеливания вычислений функция, используемые её внешние переменные и указатели помечаются соответственными ключевыми словами. При отсутствии явных побочных эффектов, компилятор оформляет функцию не как элемент процедурного программирования, а функционального, то есть чистую (не имеющих побочных эффектов). Если присутствуют явные побочные эффекты, например, использование ввода/вывода, то компилятор, отследив их, выдаёт сообщение об ошибке.
СемантикаПример программыПример программы вычисления числа Фибоначчи: 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; } Как видно из примера язык Т++ внёс незначительные изменения в синтаксис языка С++, а именно: указатели Препроцессор
Компилятор
Т-СистемаТ-система предоставляет интегрированную среду разработки посредством расширения среды С++ 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 int f(int a,double b) описывает Т-функцию с двумя аргументами и одним выходным значением. 2. Вызов Т-функции не вызывает блокирование программы до завершения работы Т-функции. Результатом вызова является неготовое значение (Т-значение). 3. Неготовое значение может быть присвоено Т-переменной. Операция присваивания Т-переменной неготового значения не вызывает блокирование программы. Т-переменная описывается с указанием ключевого слова tval int x; описывает Т-переменную типа int. 4. По окончании вычисления Т-функции соответствующее неготовое значение становится готовым и далее повторяет поведение обычного значения базового типа. 5. Операции взятия значения или приведения к базовому типу для Т-переменных вызывает блокирование выполнения функции до тех пор, пока значение Т-переменной не станет готовым. Примечания
Литература
СсылкиПроекты
Описание Т-системы
Категории:
Источник: Русская википедия 2012 | ||||||||||||||||||||||
Вы можете разместить ссылку на этот материал у себя на сайте, блоге или форуме
Похожие статьи Похожих статей не найдено. |
Универсальная энциклопедия 2012 Карта сайта Страница создана за 0.023048 сек. Всего документов включено в базу знаний: 5150576 |