- •Руководство программиста
- •1. Назначение программы
- •1.1. Назначение
- •1.2. Условия применения
- •2. Характеристика программы
- •2.1. Программа и параллельный алгоритм
- •2.2. Особенности функционального подхода к распараллеливанию
- •2.3. Примеры программ
- •2.3.1. Числа Фибоначчи
- •2.3.3. Рекурсивный обход дерева
- •2.5. Особенности реализации в различных операционных системах
- •2.5.1. OpenTs для Windows
- •2.5.1.1. Платформа Windows Compute Cluster Server
- •2.5.1.2. Инсталлятор
- •2.5.1.3. Набор для разработчика (sdk)
- •2.5.1.4. Интеграция с Visual Studio 2005
- •2.5.1.5. Сборка t-приложений
- •2. Локально в параллельном режиме, используя mpiexec:
- •3. На кластере, используя приложение Cluster Job Submission and Monitoring Console, которое поставляется вместе с Compute Cluster Pack:
- •2.6. Особенности организации параллельных вычислений при помощи т- системы
- •2.7. Программное обеспечение т-системы и дополнительные возможности
- •2.7.2. Архитектура ядра т-системы
- •2.8. Сервисные возможности т-системы
- •2.9. Алгоритм поддержки общей памяти
- •2.9.1. Решения, использованные при построении Суперпамяти
- •2.9.2. Описание архитектуры и программной реализации Суперпамяти
- •2.9.3. Передача значений с узла на узел
- •2.9.4. Алгоритм работы сборщика программного мусора
- •2.9.5. Операции присваивания и «замораживания» неготовых величин
- •2.9.6. Возможное расширение адресного пространства суперпамяти для поддержки распределенных вычислительных сетей
- •2.10. Планирование в OpenTs
- •2.10.1. Постановка задачи
- •2.10.2. Алгоритм планирования
- •Допустим, мы имеем данные t1, t2 и d(t). Рассмотрим эффект от пересылки некоторой задачи с узла 1 на узел 2. Предположим,
- •Где δi зависят от сложности задачи и ее сетевой активности. При этом:
- •2.11. Метапланировщик OpenTs
- •2.12. Поддержка отказоустойчивости исполнения т-приложений
- •2.12.1. Неготовые значения и незавершенные по причине сбоя вычисления
- •2.12.2. Вектор перерождений
- •2.12.3. Вектор посещений
- •2.12.4. Классы повреждений т-функции в случае сбоя
- •3. Обращение к программе
- •3.2. Пример программы, использующей суперпотоки (уровень s)
- •3.3. Использование т-структур и массивов переменного размера
- •3.4. Описание классов реализации системы OpenTs
- •3.4.1. Уровень суперпамяти и суперпотоков
- •3.4.2. Уровень мобильных объектов, мобильных ссылок и мобильных заданий
- •3.4.3. Уровень поддержки т-семантики
- •3.4.4. Сервисные классы
- •3.6. Определение т-контекста во время исполнения программы
- •4. Сообщения
- •4.1. Цветовая схема
- •4.2. Сообщения о фатальных ошибках
- •4.3. Информационные сообщения
- •5. Приложение a. Пример вставки и замены листьев в дереве.
- •6. Приложение b. Использование динамического массива.
2.7. Программное обеспечение т-системы и дополнительные возможности
В состав программного обеспечения Т-системы входят
компилятор языка Т++;
ядро Т-системы;
программы поддержки сервисных возможностей (профилирование, трассировка, повторение трассы, отладка).
2.7.1. Компилятор языка Т++
Для построения компиляторов языка T++ в настоящее время используется две технологии. Первая основана на технологии конвертирования языковых расширений C++ с помощью технологии OpenC++, вторая использует инфраструктуру компилятора GCC, в который добавляется языковой фронтенд для языка T++.
К достоинствам первой технологии можно отнести относительную простоту, возможность контролировать ход трансляции, рассматривая листинг конвертированной T++-программы. При этом также возможно применение различных компиляторов для обработки конвертированного кода (в частности, оптимизирующего компилятора фирмы Intel). К временным недостаткам следует отнести отсутствие поддержки некоторых специфических языковых конструкций C/C++.
Достоинствами второй технологии является прямая интеграция с компилятором GCC [36]: после обработки специфических конструкций языка T++ итоговая программная структура обрабатывается стандартным для GCC образом. Кроме этого, автоматически обеспечивается поддержка всех специфических для GCC языковых конструкций. К недостаткам данного метода создания Т++ компилятора относится привязанность к компилятору GCC. Таким образом, этот подход неудобен для распространения OpenTS, поскольку в дистрибутив системы необходимо включать модифицированный дистрибутив GCC.
В обеих реализациях программа в некоторый момент времени преобразуется в семантически эквивалентную ей C++-программу, в которую добавлены соответствующие операторы и определения из заголовочного файла txx (конвенции компиляции для языка T++) и trt (T-runtime). Дальнейшее обеспечение семантики конструкций языка T++ обеспечивается средой исполнения (библиотека libtrt).
OpenC++ — это инструмент для лексического анализа и трансляции исходных кодов C/C++-программ. В нем используется протокол метаобъектов (metaobject protocol (MOP)) [37], который позволяет создавать расширения языка C++. Программа, в которой используется OpenC++, является метапрограммой, в которой описывается, каким образом следует компилировать или анализировать исходные коды программ на C++. Метапрограмма пишется на C++ и в ней описывается некоторое небольшое количество классов. Затем метапрограмма компилируется компилятором OpenC++. Результатом компиляции является динамическая библиотека, которая в дальнейшем используется как подключаемый модуль OpenC++ для компиляции расширений языка C++. Метапрограмма написана с использованием программного интерфейса MOP. В процессе синтаксического разбора части исходного кода программы представляются в виде дерева с использованием метаобъекта Ptree.
Было решено для постоянного развития OpenTS использовать Т++ компилятор на основе системы OpenC++, поскольку такой выбор обеспечивает программную независимость от операционной системы и компилятора C/C++, и не создает препятствий для распространения системы OpenTS.
