Введение 5
1. Постановка задачи 8
2. Обзор 9
2.1. Вычисления на графическом процессоре 9
2.2. Библиотеки для работы с графическими процессорами . 10
2.3. Форматы представления матриц и векторов 11
2.4. Операции линейной алгебры 12
2.5. Алгоритмы анализа графов 14
2.6. Аналогичные библиотеки 17
3. Архитектура библиотеки 20
3.1. Основные компоненты 20
3.2. Сценарий использования 21
4. Реализация и оптимизации 25
4.1. Поэлементное сложение CSR-матриц 25
4.2. Умножение CSR-матрицы на плотный вектор 26
4.3. Умножение CSR-матрицы на разреженный вектор .... 27
4.4. Оптимизация префиксной суммы и сортировки 27
4.5. Оптимизация Brahma.FSharp 28
5. Реализация алгоритмов анализа графов 29
6. Исследование производительности 31
6.1. Постановка экспериментов 31
6.2. Исследование оптимизаций Brahma.FSharp и базовых операций 32
6.3. Сравнение производительности с аналогичными библиотеками 35
6.4. Выводы из исследования производительности 41
Заключение
Список литературы
Одной из самых известных структур данных информатики является граф. Графы активно применяются в рекомендательных системах и
СУБД, а также в разных науках: биологии [17], физике [9] и химии [3],
как и в математике — теории групп [2], топологии [20], теории вероятностей [4]. Следует отметить, что алгоритмы анализа графов получили
широкое распространение в анализе социальных сетей [15].
Классическое представление графа в виде множеств вершин и дуг
не всегда удобно для программирования алгоритмов анализа графов,
поэтому граф часто представляется иным образом. Одним из способов
представить граф в памяти машины является матрица смежности —
квадратная матрица размера N ×N, где N — количество вершин графа.
Ячейка (i, j) матрицы отвечает за наличие дуги между вершинами i и j
и имеет значение 0 (дуги нет) или 1 (дуга есть). Алгоритмы обработки
графов, представленных в виде матриц смежности, создаются на языке
линейной алгебры и широко освещены в литературе [10].
Граф, имеющий небольшое количество дуг относительно количества вершин, разумно представлять в виде разреженной, а не плотной
матрицы. Разреженная матрица — это матрица с преимущественно нулевыми элементами. Одним из наиболее активно используемых форматов разреженных матриц является CSR-формат1, сжимающий хранимые строковые индексы. Помимо CSR-формата используется симметричный ему CSC-формат, а также координатный формат, хранящий
индексы и значения элементов в виде троек.
Развитие идей о связи графов и разреженной линейной алгебры послужило толчком к созданию стандарта GraphBLAS [16], определяющего алгоритмы обработки графов на языке линейной алгебры с использованием разреженных матриц и векторов, заданных над полукольцами.
В рамках данной работы были достигнуты следующие результаты.
1. Выполнена реализация библиотеки, включая перечисленные ниже
возможности.
• Доработаны и оптимизированы базовые операции библиотеки: сортировка и префиксная сумма массива.
• Выявлены и устранены ухудшающие производительность
недочеты в Brahma.FSharp: асинхронная коммуникация с
очередью OpenCL через MailboxProcessor и лишние синхронизации этой очереди при обработке сообщений.
• Реализованы алгебраические операции: поэлементное сложение разреженных матриц и умножение разреженной матрицы
на плотный и разреженный вектор.
2. С помощью имеющихся операций реализованы следующие алгоритмы анализа графов: классический обход графа в ширину (с
плотным фронтом), поиск кратчайшего пути, а также ранжирование веб-страниц с помощью PageRank. Реализованы две дополнительные вариации обхода в ширину: обход с чередованием плотного и разреженного фронта, и обход с только разреженным фронтом.
3. Исследована производительность созданной библиотеки. Установлено, что реализованные оптимизации для Brahma.FSharp и базовых операций привели к увеличению производительности не менее чем в 3 раза. Произведено сравнение быстродействия библиотечных операций и графовых алгоритмов с реализациями из аналогичных библиотек на устройствах AMD и NVIDIA. Обнаружено, что производительность рассмотренных базовых операций не
уступает аналогичным реализациям, однако наблюдается отставание в производительности алгоритмов анализа графов от аналогов
на CUDA и OpenCL.
43В планы по дальнейшей разработке проекта входит устранение
выявленных в ходе данной работе проблем с производительностью, а также разработка более дружественного пользовательского интерфейса, пополнение набора операций библиотеки и доработка транслятора Brahma.FSharp.
Код проекта GraphBLAS-sharp доступен в репозитории на сервисе github16. Имя пользователя: kirillgarbar
[[1] Artiles Oswaldo, Saeed Fahad. TurboBFS: GPU Based Breadth- First Search (BFS) Algorithms in the Language of Linear Algebra.— Vol. 2021. — 2021. —05.
[2] Baginski Czeslaw, Grzeszczuk Piotr. On the generic family of Cayley graphs of a finite group //J. Comb. Theory, Ser. A. — 2021.— Vol. 184. — P. 105495. — URL: https : //doi . org/10.1016/j . j cta. 2021. 105495.
[3] Cayley Graphs of Semigroups Applied to Atom Tracking in Chemistry / Nikolai Npjgaard, Walter Fontana, Marc Hellmuth, Daniel Merkle // J. Comput. Biol.— 2021.— Vol. 28, no. 7.— P. 701-715.— URL: https://doi.org/10.1089/cmb.2020.0548.
[4] Comparing large-scale graphs based on quantum probability theory / Hayoung Choi, Hosoo Lee, Yifei Shen, Yuanming Shi // Appl. Math. Comput.— 2019.— Vol. 358.— P. 1-15.— URL: https://doi.org/ 10.1016/j.amc.2019.03.061.
[5] Davis Timothy A. Algorithm 1000: SuiteSparse:GraphBLAS: Graph Algorithms in the Language of Sparse Linear Algebra // ACM Trans. Math. Softw. — 2019. — dec. — Vol. 45, no. 4. — 25 p. — URL: https: //doi.org/10.1145/3322125.
[6] Gao Jiaquan, Qi Panpan, He Guixia. Efficient CSR-Based Sparse Matrix-Vector Multiplication on GPU // Mathematical Problems in Engineering.—2016. —01. —Vol. 2016. —P. 1-14.
[7] Gilbert John R. What did the GraphBLAS get wrong? // HPEC GraphBLAS BoF.— 2022.— URL: https://sites.cs.ucsb.edu/ ~gilbert/talks/talks.htm.
[8] Green Oded, Odeh Saher, Birk Yitzhak. Merge Path - a Visually Intuitive Approach to Parallel Merging. — 2014. — 06.
[9] Jr. G. David Forney. Codes on Graphs: Models for Elementary Al¬gebraic Topology and Statistical Physics // IEEE Trans. Inf. The¬ory. - 2018.- Vol. 64, no. 12.- P. 7465-7487.- URL: https: //doi.org/10.1109/TIT.2018.2866577.
[10] Konig D. Graphen und Matrizen (Graphs and Matrices).— 1931.
[11] Kopp Nick. Using Cudafy for GPGPU Programming in .NET.— 2013.— URL: https://www.codeproject.com/Articles/20279 2/Using-Cudafy-for-GPGPU-Programming-in-NET.
[12] Nguyen Hubert. Parallel Prefix Sum (Scan) with CUDA // GPU Gems 3. — 2007. —08. — ISBN: 9780321545428.
[13] Orachev Egor, Grigorev Semyon. Spla: Generalized Sparse Linear Al¬gebra Library with Vendor-Agnostic GPUs Acceleration // EEE High Performance Extreme Computing Virtual Conference. — 2023. — 2 p. — URL: https://ieee-hpec.org/wp-content/uploads/2023/09/78. pdf.
[14] Review on Sparse Matrix Storage Formats With Space Complexity Analysis / Saira Jamalmohammed, Lavanya K., Sumaiya I., Biju V.— 2021. —01. —P. 122-145. —ISBN: 9781799833376.
[15] Rizi Fatemeh Salehi. Graph Representation Learning for Social Net¬works : Ph. D. thesis / Fatemeh Salehi Rizi ; University of Passau, Germany.— 2021.— URL: https://opus4.kobv.de/opus4-uni-pas sau/frontdoor/index/index/docId/921.
[16] Standards for graph algorithm primitives / Tim Mattson, David Bader, Jon Berry et al. // 2013 IEEE High Performance Extreme Computing Conference (HPEC). - 2013. - P. 1-2.
[17] Washietl Stefan, Gesell Tanja. Graph Representations and Algorithms in Computational Biology of RNA Secondary Structure // Struc¬tural Analysis of Complex Networks / Ed. by Matthias Dehmer. — Birkhauser / Springer, 2011,— P. 421-437.— URL: https://doi.or g/10.1007/978-0-8176-4789-6_17.
[18] Yang Carl, Buluq Aydin, Owens John D. GraphBLAST: A High- Performance Linear Algebra-Based Graph Framework on the GPU // ACM Trans. Math. Softw.— 2022.—feb.— Vol. 48, no. 1.— 51 p.— URL: https://doi.org/10.1145/3466795.
[19] Yang Carl, Wang Yangzihao, Owens John. Fast Sparse Matrix and Sparse Vector Multiplication Algorithm on the GPU.— 2015. — 05.— P. 841-847.
[20] A novel weighted graph representation-based method for structural topology optimization / Jie Xing, Ping Xu, Shuguang Yao et al. // Adv. Eng. Softw.— 2021.— Vol. 153.— P. 102977.— URL: https: //doi.org/10.1016/j.advengsoft.2021.102977