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

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

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

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

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

 

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

Тема включает следующие задачи:

  • Изучение и проработка архитектуры GNA.
    • Разработка системы сериализации вычислительного графа в файл с сохранением (или без) промежуточных вычислений.
    • Восстановление вычислительного графа из файла.
  • Создание полного клона вычислительного графа.

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

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

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

  • Python: h5py, numpy, scipy, matplotlib.
  • C++: C++14(17), Eigen, Boost.

сериализация, анализ данных, GNA, разработка ПО