Визуализация вычислительного графа GNA (программирование)
Диплом

Проект GNA — Global Neutrino Analysis — совместное измерение параметров нейтрино из данных нескольких экспериментов (JUNO, Daya Bay и др.) и включает в себя разработку одноименного ПО. В рамках ПО GNA мы работаем над решением следующих проблем, возникающих при анализе данных:

  • Разработка общего фреймворка для реализации сложных моделей экспериментов с большим количеством исследуемых параметров.
  • Возможность с одной стороны гибкой высокоуровневой настройки моделей, а с другой, контроль низкоуровневых особенностей вычисления. Высокая эффективность.
  • Разделение физических и программистских задач.

В GNA сложная функция, выполняющая, например, вычисление сигнала, наблюдаемого в эксперименте строится как направленный граф. Каждый узел графа выполняет некоторую элементарную операцию (матричное произведение, вычисление сечения взаимодействия, интегрирования и др) и называется трансформацией. Трансформация производится сразу на массиве данных, а её результат кешируется, что позволяет реализовать подход ленивых вычислений.
В пакет GNA входит инструментарий для создания и настройки дерева вычислений, статистического анализа данных, функции для оформления результатов.

Проект находится на альфа версии, тем не менее уже используется несколькими группами для анализа данных эксперимента Daya Bay и оценки чувствительности эксперимента JUNO. Текущая версия документации: http://gna.pages.jinr.ru/gna/.

 

Визуализация вычислительного графа

Создание анализа в GNA подразумевает работу с вычислительным графом. Характерный граф для эксперимента JUNO в настоящее время включает около 500 элементов и около 800 соединений. Для эффективной отладки анализа необходимы инструменты для визуализации графа. Данная задача имеет несколько уровней сложности и может включать опционально следующие пункты:

  • Отображение 2-мерного графа.
  • Отображение 3-мерного графа. Учёт симметрии (цилиндрическая).
  • Стили: изменения стилей в зависимости от характера данных, свойств вычислений (CPU/GPU), номера детектора и др.
  • Интерактивность: отображение характеристик данных (размерность, размер), состояния вычислений, отрисовка графиков, гистограмм и др.
  • Возможность запуска визуализации на сервере с удалённым доступом.

К обязательным требованиям относятся:

  • Документация кода в doxygen, пользовательская документация в reStructuredText, подготовка unit-тестов.

 

Предполагаемый технологический стек:

  • Python: numpy, scipy, matplotlib.
  • C++: C++14(17), Eigen, Boost.
визуализация, численные методы, GNA, разработка ПО