Оглавление 2
Введение 3
Постановка задачи 4
Обзор литературы 6
Глава 1. Рассматриваемое программное обеспечение 8
1.1 FairRoot и ROOT 8
1.2 MpdRoot 9
Глава 2. Используемые технологии параллельного программирования 9
2.1 OpenMP для многоядерных CPU 10
2.2 CUDA 11
2.3 Параллельные вычисления в зависимостях пакета MpdRoot 13
Глава 3. Анализ существующего кода 14
Глава 4. Модификации 16
4.1 Применение CUDA к фрагменту фильтра Калмана 16
4.2 Анализ функции FindNeighbourStrips 19
4.3 Оптимизация функции FindNeighbourStrips 22
4.4 Тесты 24
4.5 Возможности применения Intel Xeon Phi 26
Вывод 28
Заключение 28
Список литературы 30
ПРИЛОЖЕНИЕ А. Таблица зависимостей MpdRoot 32
ПРИЛОЖЕНИЕ Б. Граф вызовов для функции MnvertLocal 33
Для изучения ядерной физики проводятся эксперименты на установках, позволяющие разгонять пучки частиц до высоких скоростей. После ускорения пучки частиц сталкиваются либо с неподвижной мишенью (линейные ускорители), либо со встречным пучком (коллайдеры). Результат фиксируется детектором, находящимся в точке столкновения. На основе полученных данных делаются выводы о взаимодействии частиц и их свойствах.
В современной ядерной физике особый научный интерес представляет состояние материи, называемое кварк-глюонной плазмой. На данный момент эта область мало изучена. Исследования в этой сфере помогут найти ответы на многие фундаментальные вопросы, в том числе, о развитии Вселенной и нейтронных звездах.
В настоящий момент в городе Дубна Московской области стоится ускорительный комплекс NICA [1]. Одной из задач, которые планируется изучать с помощью данной установки, является воссоздание и исследование состояния, в котором находилась Вселенная сразу после Большого Взрыва. В состав ускорительного комплекса входит коллайдер с двумя точками взаимодействия встречных пучков, оснащенными детекторами частиц: MPD и SPD.
Для каждого детектора частиц пишется программное обеспечение, реализуемое в зависимости от задач, исследуемых с помощью конкретной установки. При проведении экспериментов ядерной физики необходимо собирать объемы данных, достаточные для обоснования каких-либо выводов и исключающие возможность принятия ошибочных результатов за верные. Другими словами, для того чтобы на основании физического эксперимента можно было получить корректное заключение, необходимо провести его неоднократно.
В наши дни область изучения ядерной физики активно развивается. Лаборатории в разных точках планеты проводят исследования на физических установках. Поэтому возникает потребность в том, чтобы программное обеспечение работало не только корректно, но и достаточно быстро. Данные, полученные в экспериментах, должны быть актуальными. Также важно, чтобы результаты исследований могли быть описаны в ближайшем будущем.
Предполагается, что обработка данных, получаемых с детектора MPD будет производиться с помощью разрабатываемого фреймворка MpdRoot. Этот проект создан на основе двух широко используемых в ядерных исследованиях библиотеках - FairRoot и Root. Они активно применяются в подобных экспериментах, проводимых в организациях FAIR, CERN и других.
В данной работе рассматриваются возможности ускорения работы программного обеспечения для детектора MPD [2, 3]. Рассмотрены возможности применения технологий параллельного программирования в данном продукте, исследована целесообразность их применения на конкретных примерах фрагментов существующего кода.
В работе отобраны фрагменты фреймворка, которые потенциально могут быть перенесены на сопроцессорные архитектуры. Проанализирована целесообразность применения графических ускорителей NVIDIA. Создан прототип модифицированного фрагмента алгоритма фильтра Калмана и проведены эксперименты на графическом процессоре NVIDIA.
Также рассмотрены возможности применения многоядерных центральных процессоров. Приведен пример оптимизации фрагмента кода фреймворка на процессорах Intel Xeon. Проанализирована возможность применения продуктов Intel Xeon Phi.
Предположение о возможности переноса кода на сопроцессорные архитектуры были сделаны на основе профилирования тестов фреймворка. Проведенные практические тесты показали значительное замедление работы прототипа на GPU по сравнению с последовательной реализацией.
1. Kekelidze V. D., Kovalenko A. D., Meshkov I. N., Sorin A. S., Trubnikov G. V. NICA at JINR: New prospects for exploration of quark-gluon matter // Physics of Atomic Nuclei. 2012. Vol. 75, Issue 5. P. 542-545.
2. Abraamyan Kh.U., Afanasiev S.V., Alfeev V.S., Anfimov N., Arkhipkin D. et al. The MPD detector at the NICA heavy-ion collider at JINR // Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment. 2011. Vol. 628, Issue 1, P. 99-102.
3. Сисакян А. Н., Сорин А. С. Многоцелевой детектор - MPD для изучения столкновений тяжелых ионов на ускорителе NICA (Концептуальный дизайн-проект), версия 1.4. http://nica.jinr.ru/files/CDR_MPD/MPD_CDR_ru.pdf
4. Antcheva I., Ballintijn M., Bellenot B., Brun R., Naumann A. et al. ROOT — A C++ framework for petabyte data storage, statistical analysis and visualization // Computer Physics Communications. 2009. Vol. 180, Issue 12. P. 2499-2512.
5. Bertini D. et al. The FAIR simulation and analysis framework //Journal of Physics: Conference Series. IOP Publishing, 2008. Vol. 119. №. 3. P. 032011.
6. Chandra R. Parallel programming in OpenMP. Morgan kaufmann, 2001.
7. Farber R. CUDA application design and development. Elsevier, 2011.
8. Fatkina A., Iakushkin O., Tikhonov N. Application of GPGPUs and Multicore CPUs in Optimization of Some of the MpdRoot Codes //25th Russian Particle Accelerator Conference (RuPAC'16). JACOW, Geneva, Switzerland, 2017. P. 416-418.
9. OpenMP Application Program Interface version 4.0. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
10. Intel Xeon Phi Coprocessor - the Architecture. http://gec.di.uminho.pt/Discip/MInf/cpd1314/SCD/Intel_Xeon-PhiArch.pdf
11. Sodani A. et al. Knights landing: Second-generation Intel Xeon Phi product //IEEE Micro. 2016. Vol. 36. №. 2. P. 34-46.
12. Jeffers J., Reinders J. Intel Xeon Phi coprocessor high-performance programming. Newnes, 2013.
13. Rahman R. Intel Xeon Phi Coprocessor Architecture and Tools: The Guide for Application Developers. Apress, 2013.