Обзор работы
Проект 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.