Открыть сервисСервис

Тауп — суперкомпьютерное сообщество

Тауп (англ. TAU — Tuning and Analysis Utilities) — набор инструментов для профилирования и анализа производительности параллельных программ, разрабатываемый в рамках суперкомпьютерного сообщества (англ. Parallel Tools Consortium) при участии Университета Индианы, Организации Объединённых Наций (ЮНЕСКО) и ряда университетов. Инструменты TAU предназначены для анализа программ, написанных на Fortran, C, C++, Java, Python, а также использующих параллельные библиотеки и модели выполнения — MPI, OpenMP, CUDA, OpenCL, Pthreads.

Общие сведения

Сообщество TAU (Tuning and Analysis Utilities) возникло как проект, объединивший усилия исследователей в области высокопроизводительных вычислений (HPC). Основная задача, которую решают инструменты TAU — сбор, обработка и визуализация данных о поведении параллельных приложений во время их выполнения. В отличие от отладчиков, TAU не ищет ошибки в логике программы, а отвечает на вопрос, где и почему программа работает неэффективно: какие функции потребляют процессорное время, как распределена нагрузка между процессами и потоками, где возникают узкие места при обмене данными.

Система поддерживает множество платформ, включая Linux, macOS, Windows (ограниченно), а также различные архитектуры процессоров — x86, x86-64, ARM, IBM POWER, а также ускорители на базе GPU NVIDIA и AMD. TAU активно используется на крупнейших суперкомпьютерах мира, в том числе в проектах, связанных с эмуляцией физических процессов, метеорологическими расчётами, молекулярной динамикой и другими научными задачами.

Возможности

Функциональность TAU включает:

  • Профилирование — сбор статистики по времени выполнения функций, числу вызовов, потреблению памяти. Поддерживаются как автоматическое инструментирование (через компилятор), так и ручное с помощью API библиотеки.
  • Трассировка — запись последовательности событий (вызовы функций, обмены сообщениями через MPI, операции ввода-вывода) с точным временным штампом. Трассы позволяют анализировать причинно-следственные связи между событиями в разных процессах.
  • Счётчики аппаратуры — чтение регистров процессора (PMU) для оценки таких метрик, как количество инструкций, кэш-промахи, ветвления. Поддерживаются библиотеки PAPI и Perf.
  • Визуализация — графическое представление результатов через встроенную утилиту ParaProf, а также экспорт в форматы, поддерживаемые Tau2ParaView и Vampir.

Профили TAU хранятся в виде набора файлов, один на процесс (или поток), что позволяет масштабировать сбор данных до десятков тысяч процессов. Для анализа больших объёмов данных предусмотрены утилиты командной строки (tau_prof2matrix, tau_merge) и серверное веб-приложение TauBench.

Архитектура и принцип работы

TAU работает на основе инструментирования исходного кода. Существует несколько способов подключения:

  1. Автоматическое инструментирование — компилятор (например, через -finstrument-functions в GCC/Clang) вставляет вызовы библиотеки TAU в начало и конец каждой функции.
  2. Ручное инструментирование — программист добавляет вызовы TAU_PROFILE(...) в нужные места кода.
  3. Интеграция с профилировщиком — TAU может использовать данные, собранные внешними инструментами, например, HPCToolkit или Scalasca.

Для работы с MPI TAU автоматически перехватывает вызовы библиотеки через динамическую подмену символов (LD_PRELOAD), что позволяет собирать статистику по всем коммуникационным операциям без изменения исходного кода.

Применение в России

Инструменты TAU используются в ряде российских суперкомпьютерных центров, в том числе в Межведомственном суперкомпьютерном центре РАН (МСЦ РАН), где они применяются для оптимизации приложений, работающих на кластерах с процессорами Intel Xeon, AMD EPYC и ускорителями. TAU входит в стандартный набор инструментов HPC-разработчика наряду с Scalasca, HPCToolkit и Vampir.

Связь с другими инструментами

TAU тесно интегрирован с библиотекой PAPI (Performance Application Programming Interface), обеспечивающей доступ к аппаратным счётчикам, и с визуализатором ParaView через плагин Tau2ParaView. Для автоматизации сбора профилей в распределённых запусках используется поддержка скриптов запуска SLURM, PBS и LSF.

История

Проект TAU развивается с конца 1990-х годов. Основные разработчики — исследовательская группа профессора Каушика Датты (Koushik Datta) и профессора Алана Д. Калина (Alan D. Kalinin) из Университета Индианы. Развитие проекта поддерживается Национальным научным фондом США (NSF) и рядом министерств энергетики. Версии TAU регулярно обновляются, добавляется поддержка новых архитектур и моделей параллелизма.

Источники

  • Официальная документация TAU (tau.uoregon.edu)
  • Документация Parallel Tools Consortium
  • Руководства по использованию TAU на суперкомпьютерных системах МСЦ РАН
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru