- •Руководство программиста
- •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. Использование динамического массива.
3.6. Определение т-контекста во время исполнения программы
Во время исполнения программы можно изменять Т-контекст, или совокупность параметров Т-надстройки над стандартной средой исполнения C++.
Вид оператора, изменяющего контекст, определяется в спецификации языка T++. Он имеет вид tct(parameter[(value)]) и действует в пределах блока. Перечень поддерживаемых в данной версии параметров Т-контекста приведен ниже.
tct(magnetic). Создаваемые в пределах блока Т-дескрипторы (Т-переменные и Т-указатели) будут “намагниченными”. Намагниченный дескриптор, будучи переданным на другой узел кластера, влечет за собой автоматическое “притяжение” неготовых данных, на которые он ссылается, в момент их готовности (то есть в будущем). Данная возможность является существенной для спекулятивной подкачки данных, которая может существенно влиять на производительность определенной группы приложений, и является критической для сравнения с другими технологиями распараллеливания.
tct(glue). Создаваемые в пределах блока Т-дескрипторы (Т-переменные и Т-указатели) будут “клейкими”. Клейкий дескриптор, будучи переданным на другой узел кластера, влечет за собой автоматическое “притяжение” неготовых данных, на которые он ссылается, в момент пересылки. Данная возможность является существенной для спекулятивной подкачки данных, которая может существенно влиять на производительность определенной группы приложений, и является критической для сравнения с другими технологиями распараллеливания.
tct(cpuUsage(usage)). Указание Т-системе на тяжесть гранул (Т-функций), которые порождаются в пределах данного блока. Данная информация может использоваться стандартным и внешним планировщиками.
tct(atRank(rank)). Указание на то, что все Т-функции, которые порождены в пределах блока, следует направлять для вычисления на узле с рангом rank.
tct(extraSize(n)). Указание на то, что данные, аллокируемые для ячеек суперпамяти, выделяемых в пределах данного блока, должны содержать n байт неразмеченной памяти дополнительно. Неразмеченная память располагается непосредственно после стандарной структуры данных и трактуется системой как массив байт. Она не должна содержать Т-дескрипторов (Т- переменных и Т-указателей). Техника использования конструкции extraSize морально устарела. Вместо неё мы рекомендуем использовать другие конструкции на основе класса ts::TExtData.
tct(priority(prio)). Определение динамического приоритета порождаемых в пределах данного блока Т- функций.
tct(stackSizeLg(lg)). Определение двоичного логарифма размера стека для порождаемых в пределах данного блока Т-функций.
tct(memoize). Указание на то, что для порождаемых в пределах данного блока Т-функций следует использовать стратегию мемоизации (табулирования)
tct(setLabel(label)). Установка наименования Т-функции (используется при использовании режима отладки).
4. Сообщения
4.1. Цветовая схема
Системные сообщения выделяются с помощью цвета для того, чтобы их визуально было проще отличить от вывода пользовательской программы. Цветовая схема выделения системных сообщений используется в том случае, если устройство отображения - консоль оператора - поддерживает такую возможность, либо если установлена переменная окружения TTY_HAS_COLORS.
Ярко-красным цветом выделяются сообщения о фатальных ошибках, таких как сбой подсистемы коммуникаций, исчерпание лимита памяти или суперпамяти, перекрытие допустимых границ стека суперпотока и т. д.
Остальные системные сообщения имеют цвет, зависящий от номера вычислительного узла, с которого поступает сообщение. Конкретная цветовая схема зависит от устройства отображения. Обычно нулевой узел использует зеленый цвет, первый – желтый, второй – синий, третий – сиреневый и т д.
