Реализация многомерных методов интегрирования в ПО GNA (программирование)
Диплом

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

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

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

В пакет GNA входит инструментарий для создания и настройки дерева вычислений, статистического анализа данных, функции для оформления результатов.


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

 

Интегрирование

Подход к интегрирования в рамках GNA основан на следующие предположениях:

  • Функция интегрируется сразу на наборе интервалов, в результате чего получается 1-мерная, 2-мерная или N-мерная гистограмма.
  • Границы интервалов, а также необходимая точность интегрирования известны и заданы заранее.

Следовательно, при интегрировании, например, квадратурой Гаусса-Лежандра, все точки, на которых необходимо вычислить подынтегральную функцию, известны, а интегрирование сводится к свертке результата применения функции в рамках интервалов.

 

В настоящее время в GNA реализованы 1- и 2- мерные квадратуры Гаусса-Лежандра. Обе реализации на выходе дают 1-ю гистограмму, так как 2-мерные квадратуры подразумевают только один интервал по второй переменной.

Данная работа включает следующие задачи:

  • Обобщение методики интегрирования для использования других типов квадратур Гаусса и способов интегрирования.
  • Реализация полноценного 2-мерного интегрирования (на выходе двумерная гистограмма), а также многомерного интегрирования в общем виде (на выходе тензор).
  • Документация кода в doxygen, пользовательская документация в reStructuredText, подготовка unit-тестов.

 Опционально работа может включать следующие задачи:

  • Портирование соответствующих трансформаций на CUDA.

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

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