Реализация алгоритма поиска путей в графовых базах данных через тензорное произведение на GPGPU
|
Введение 4
1. Цель и задачи 6
2. Обзор предметной области 7
2.1. Терминология 7
2.2. Поиск путей с ограничениями 8
2.3. Существующие решения 9
2.4. Поиск путей с КС ограничениями через тензорное произведение 10
2.5. Вычисления на GPU 11
2.6. Примитивы разреженной линейной алгебры для GPGPU 12
3. Архитектура библиотеки 14
3.1. Компоненты библиотеки 15
3.2. Последовательность обработки операций 18
4. Детали реализации 20
4.1. Примитивы и операции 20
4.2. Cuda-модуль 21
4.3. Python-пакет 21
4.4. Пример использования 22
5. Алгоритм поиска путей с КС ограничениями 24
6. Экспериментальное исследование 26
6.1. Постановка экспериментов 26
6.2. Результаты 30
7. Заключение 34
Список литературы 36
1. Цель и задачи 6
2. Обзор предметной области 7
2.1. Терминология 7
2.2. Поиск путей с ограничениями 8
2.3. Существующие решения 9
2.4. Поиск путей с КС ограничениями через тензорное произведение 10
2.5. Вычисления на GPU 11
2.6. Примитивы разреженной линейной алгебры для GPGPU 12
3. Архитектура библиотеки 14
3.1. Компоненты библиотеки 15
3.2. Последовательность обработки операций 18
4. Детали реализации 20
4.1. Примитивы и операции 20
4.2. Cuda-модуль 21
4.3. Python-пакет 21
4.4. Пример использования 22
5. Алгоритм поиска путей с КС ограничениями 24
6. Экспериментальное исследование 26
6.1. Постановка экспериментов 26
6.2. Результаты 30
7. Заключение 34
Список литературы 36
Все чаще современные системы аналитики и рекомендаций строятся на основе анализа данных, структурированных с использованием графовой модели. В данной модели основные сущности представляются вершинами графа, а отношения между сущностями — ориентированными ребрами с различными метками. Подобная модель позволяет относительно легко и практически в явном виде моделировать сложные иерархические структуры, которые не так просто представить, например, в классической реляционной модели. В качестве основных областей применения графовой модели можно выделить следующие: графовые базы данных [4], анализ RDF данных [6], биоинформатика [26] и статический анализ кода [14].
Поскольку графовая модель используется для моделирования отношений между объектами, при решении прикладных задач возникает необходимость в выявлении неявных взаимоотношений между объектами. Для этого формируются запросы в специализированных программных средствах для управления графовыми базами данных. В качестве запроса можно использовать некоторый шаблон на путь в графе, который будет связывать объекты, т.е. выражать взаимосвязь между ними. В качестве такого шаблона можно использовать формальные грамматики, например, регулярные или контекстно-свободные (КС). Используя выразительные грамматики, можно формировать сложные запросы и выявлять нестандартные и скрытые ранее взаимоотношения между объектами. Например, same-generation queries[1] могут быть выражены КС грамматиками, в отличие от регулярных.
Результатом запроса может быть множество пар объектов, между которыми существует путь в графе, удовлетворяющий заданным ограничениям. Также может возвращаться один экземпляр такого пути для каждой пары объектов или итератор всех путей, что зависит от семантики запроса. Поскольку один и тот же запрос может иметь разную семантику, требуются различные программные и алгоритмические средства для его выполнения.
Запросы с регулярными ограничениями изучены достаточно хорошо, языковая и программная поддержка выполнения подобных запросов присутствует в некоторых современных графовых базах данных. Однако, полноценная поддержка запросов с КС ограничениями до сих пор не представлена. Существуют алгоритмы [3,6,7,17,21] для вычисления запросов с КС ограничениями, но потребуется еще время, прежде чем появиться полноценная высокопроизводительная реализация одного из алгоритмов, способная обрабатывать реальные графовые данные.
Работы Никиты Мишина и др. [12] и Арсения Терехова и др. [8] показывают, что реализация алгоритма Рустама Азимова [3], основанного на операциях линейной алгебры, с использованием GPGPU для выполнения наиболее вычислительно сложных частей алгоритма, дает существенный прирост в производительности. Это позволило заключить, что подобный подход к реализации может быть в теории применим для анализа данных близких к реальным.
Недавно представленный алгоритм [7] для вычисления запросов с КС ограничениями также полагается на операции линейной алгебры: тензорное произведение, матричное умножение и сложение в булевом полукольце. Данный алгоритм в сравнении с алгоритмом Рустама Азимова [8] позволяет выполнять запросы для всех ранее упомянутых се-мантик и потенциально поддерживает КС запросы с большим количеством нетерминалов и правил вывода (в некоторой нормальной форме).
Для его реализации на GPGPU требуются высокопроизводительные библиотеки примитивов линейной алгебры. Подобные инструменты для работы со стандартными типами данных, такими как float, double, int и long,уже представлены. Однако библиотека, которая бы работала с разреженными данными и имела специализацию указанных ранее операций для булевых значений, еще не разработана.
Поэтому важной задачей является не только реализация перспективного алгоритма [7] на GPGPU, но и разработка библиотеки примитивов линейной булевой алгебры, которая позволит реализовать этот и подобные алгоритмы на данной вычислительной платформе.
Поскольку графовая модель используется для моделирования отношений между объектами, при решении прикладных задач возникает необходимость в выявлении неявных взаимоотношений между объектами. Для этого формируются запросы в специализированных программных средствах для управления графовыми базами данных. В качестве запроса можно использовать некоторый шаблон на путь в графе, который будет связывать объекты, т.е. выражать взаимосвязь между ними. В качестве такого шаблона можно использовать формальные грамматики, например, регулярные или контекстно-свободные (КС). Используя выразительные грамматики, можно формировать сложные запросы и выявлять нестандартные и скрытые ранее взаимоотношения между объектами. Например, same-generation queries[1] могут быть выражены КС грамматиками, в отличие от регулярных.
Результатом запроса может быть множество пар объектов, между которыми существует путь в графе, удовлетворяющий заданным ограничениям. Также может возвращаться один экземпляр такого пути для каждой пары объектов или итератор всех путей, что зависит от семантики запроса. Поскольку один и тот же запрос может иметь разную семантику, требуются различные программные и алгоритмические средства для его выполнения.
Запросы с регулярными ограничениями изучены достаточно хорошо, языковая и программная поддержка выполнения подобных запросов присутствует в некоторых современных графовых базах данных. Однако, полноценная поддержка запросов с КС ограничениями до сих пор не представлена. Существуют алгоритмы [3,6,7,17,21] для вычисления запросов с КС ограничениями, но потребуется еще время, прежде чем появиться полноценная высокопроизводительная реализация одного из алгоритмов, способная обрабатывать реальные графовые данные.
Работы Никиты Мишина и др. [12] и Арсения Терехова и др. [8] показывают, что реализация алгоритма Рустама Азимова [3], основанного на операциях линейной алгебры, с использованием GPGPU для выполнения наиболее вычислительно сложных частей алгоритма, дает существенный прирост в производительности. Это позволило заключить, что подобный подход к реализации может быть в теории применим для анализа данных близких к реальным.
Недавно представленный алгоритм [7] для вычисления запросов с КС ограничениями также полагается на операции линейной алгебры: тензорное произведение, матричное умножение и сложение в булевом полукольце. Данный алгоритм в сравнении с алгоритмом Рустама Азимова [8] позволяет выполнять запросы для всех ранее упомянутых се-мантик и потенциально поддерживает КС запросы с большим количеством нетерминалов и правил вывода (в некоторой нормальной форме).
Для его реализации на GPGPU требуются высокопроизводительные библиотеки примитивов линейной алгебры. Подобные инструменты для работы со стандартными типами данных, такими как float, double, int и long,уже представлены. Однако библиотека, которая бы работала с разреженными данными и имела специализацию указанных ранее операций для булевых значений, еще не разработана.
Поэтому важной задачей является не только реализация перспективного алгоритма [7] на GPGPU, но и разработка библиотеки примитивов линейной булевой алгебры, которая позволит реализовать этот и подобные алгоритмы на данной вычислительной платформе.
Возникли сложности?
Нужна помощь преподавателя?
Помощь студентам в написании работ!
В рамках выполнения данной работы были получены следующие результаты.
• Спроектирована библиотека примитивов разреженной линейной булевой алгебры cuBool для вычислений на GPGPU. Данная библиотека экспортирует С-совместимый интерфейс, имеет поддержку различных вычислительных модулей, а также предоставляет Python-пакет для работы конечного пользователя с примитивами библиотеки в высокоуровневой среде вычислений с управляемыми ресурсами.
• Реализована библиотека cuBool в соответствии с разработанной архитектурой. Ядро библиотеки написано на языке С—+, а математические операции, выполняющиеся на GPU, реализованы на языке Cuda C/C+—+. Библиотека предоставляет модуль CPU вычислений для компьютеров без Cuda-устройства. Также создан Python-пакет pycubool, который доступен для скачивания через пакетный менеджер PyPI.
• С использованием pycubool реализован алгоритм поиска путей с КС ограничениями через тензорное произведение. Данный алгоритм использует операции матричного умножения, сложения и произведение Кронекера в булевом полукольце, а также различные операции для манипуляций над значениями матриц.
• Выполнено экспериментальное исследование реализованной библиотеки и алгоритма. Матричное умножение показывает ускорение до 5 раз по сравнению с существующими аналогами, матричное сложение сравнимо по времени с существующими аналогами, однако операции потребляют до 3 раз меньше видеопамяти. Реализация алгоритма поиска путей с КС ограничениями на основе cuBool показывает ускорение до 6 раз по сравнению с CPU версией, что делает ее более применимой для анализа реальных данных.
Результаты, полученные в данном исследовании, были представлены на конференции GrAPL 2021 . Соответствующая статья опубликована в сборнике материалов конференции.
• Спроектирована библиотека примитивов разреженной линейной булевой алгебры cuBool для вычислений на GPGPU. Данная библиотека экспортирует С-совместимый интерфейс, имеет поддержку различных вычислительных модулей, а также предоставляет Python-пакет для работы конечного пользователя с примитивами библиотеки в высокоуровневой среде вычислений с управляемыми ресурсами.
• Реализована библиотека cuBool в соответствии с разработанной архитектурой. Ядро библиотеки написано на языке С—+, а математические операции, выполняющиеся на GPU, реализованы на языке Cuda C/C+—+. Библиотека предоставляет модуль CPU вычислений для компьютеров без Cuda-устройства. Также создан Python-пакет pycubool, который доступен для скачивания через пакетный менеджер PyPI.
• С использованием pycubool реализован алгоритм поиска путей с КС ограничениями через тензорное произведение. Данный алгоритм использует операции матричного умножения, сложения и произведение Кронекера в булевом полукольце, а также различные операции для манипуляций над значениями матриц.
• Выполнено экспериментальное исследование реализованной библиотеки и алгоритма. Матричное умножение показывает ускорение до 5 раз по сравнению с существующими аналогами, матричное сложение сравнимо по времени с существующими аналогами, однако операции потребляют до 3 раз меньше видеопамяти. Реализация алгоритма поиска путей с КС ограничениями на основе cuBool показывает ускорение до 6 раз по сравнению с CPU версией, что делает ее более применимой для анализа реальных данных.
Результаты, полученные в данном исследовании, были представлены на конференции GrAPL 2021 . Соответствующая статья опубликована в сборнике материалов конференции.
[1] Abiteboul Serge, Hull Richard, Vianu Victor. Foundations of Databases. — 1995. — 01. — ISBN: 0-201-53771-0.
[2] Analysis of Recursive State Machines / Rajeev Alur, Michael Benedikt, Kousha Etessami et al. //ACM Trans. Program. Lang. Syst. — 2005. — Jul. — Vol. 27, no. 4. — P. 786-818. — Access mode: https://doi.org/10.1145/1075382.1075387.
[3] Azimov Rustam, Grigorev Semyon. Context-free path querying bymatrix multiplication. — 2018. — 06. — P. 1-10.
[4] Barcelo Baeza Pablo. Querying Graph Databases // Proceedings of the 32nd ACM SIGMOD-SIGACT-SIGAI Symposium on Principles of Database Systems. — PODS ’13. — New York, NY, USA : Associ¬ation for Computing Machinery, 2013. — P. 175-188. — Access mode: https://doi.org/10.1145/2463664.2465216.
[5] ClSPARSE: A Vendor-Optimized Open-Source Sparse BLAS Library / Joseph L. Greathouse, Kent Knox, Jakub Pola et al. // Proceedings of the 4th International Workshop on OpenCL. — IWOCL ’16. — New York, NY, USA : Association for Computing Machinery, 2016. — Ac¬cess mode: https://doi.org/10.1145/2909437.2909442.
[6] Context-Free Path Queries on RDF Graphs / Xiaowang Zhang, Zhiyong Feng, Xin Wang et al. // CoRR. — 2015. — Vol. abs/1506.00743. — 1506.00743.
[7] Context-Free Path Querying by Kronecker Product / Egor Orachev, Ilya Epelbaum, Rustam Azimov, Semyon Grigorev. — 2020. — 08. — P. 49-59. — ISBN: 978-3-030-54831-5.
[8] Context-Free Path Querying with Single-Path Semantics by MatrixMultiplication / Arseniy Terekhov, Artyom Khoroshev, Rustam Azi¬mov, Semyon Grigorev. — 2020. — 06. — P. 1-12.
[9] Dalton Steven, Bell Nathan, Olson Luke, Garland Michael. Cusp: Generic Parallel Algorithms for Sparse Matrix and Graph Computa-tions.— 2014.—Version 0.5.0. Access mode: http://cusplibrary.github.io/.
[10] 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. — Access mode: https://doi.org/10.1145/3322125.
[11] Direct3D 12 Graphics // Microsoft Online Documents. — 2018. — Ac¬cess mode: https://docs.microsoft.com/ru-ru/windows/win32/direct3d12/direct3d-12-graphics?redirectedfrom=MSDN (online; accessed: 08.12.2020).
[12] Evaluation of the Context-Free Path Querying Algorithm Based onMatrix Multiplication/ Nikita Mishin, Iaroslav Sokolov, Egor Spirin et al. — 2019.—06.—P. 1-5.
[13] An Experimental Study of Context-Free Path Query Evaluation Methods / Jochem Kuijpers, George Fletcher, Nikolay Yakovets, Tobias Lin- daaker // Proceedings of the 31st International Conference on Sci¬entific and Statistical Database Management. — SSDBM ’19. — New York, NY, USA : ACM, 2019.— P. 121-132. — Access mode: http://doi.acm.org/10.1145/3335783.3335791.
[14] Fast Algorithms for Dyck-CFL-Reachability with Applications to Alias Analysis / Qirun Zhang, Michael R. Lyu, Hao Yuan, Zhendong Su // SIGPLAN Not. — 2013. — Jun. — Vol. 48, no. 6. — P. 435-446. — Access mode: https://doi.org/10.1145/2499370.2462159.
[15] Graphs and grammars for Context-Free Path Querying algorithms evaluation // Github. — 2021. — Access mode: https://github.com/JetBrains-Research/CFPQ_Data(online; accessed: 11.03.2021).
[16] Graspan: A Single-Machine Disk-Based Graph System for Interpro-cedural Static Analyses of Large-Scale Systems Code / Kai Wang, Aftab Hussain, Zhiqiang Zuo et al. //SIGPLAN Not. — 2017.— Apr.—Vol. 52, no. 4. — P. 389-404. — Access mode: https://doi.org/10.1145/3093336.3037744.
[17] Hellings Jelle. Path Results for Context-free Grammar Queries on Graphs. — 2015. — 02.
[18] Hopcroft John E., Motwani Rajeev, Ullman Jeffrey D. Introduc¬tion to Automata Theory, Languages, and Computation (3rd Edi¬tion). — USA : Addison-Wesley Longman Publishing Co., Inc., 2006. — ISBN: 0321455363.
[19] Liu Weifeng, Vinter Brian. A Framework for General Sparse Matrix-Matrix Multiplication on GPUs and Heterogeneous Processors // J.Parallel Distrib. Comput. — 2015.—Nov.—Vol. 85, no. C. — P. 47- 61.—Access mode: https://doi.Org/10.1016/j.jpdc.2015.06.010.
[20] Mathematical foundations of the GraphBLAS / J. Kepner, P. Aaltonen, D. Bader et al. // 2016 IEEE High Performance Extreme Com¬puting Conference (HPEC). — 2016. — Sep.—P. 1-9.
[21] Medeiros Ciro, Musicante Martin, Costa Umberto. An Algorithm for Context-Free Path Queries over Graph Databases. — 2020. — 04.
[22] NVIDIA. CUDA Thrust // NVIDIA Developer Zone. — 2020. — Access mode: https://docs.nvidia.com/cuda/thrust/index.html(online; accessed: 16.12.2020).
[23] NVIDIA. CUDA Toolkit Documentation // NVIDIA Devel¬oper Zone. — 2020. — Access mode: https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html (online; accessed: 01.12.2020).
[24] Nagasaka Yusuke, Nukada Akira, Matsuoka Satoshi. High-Performance and Memory-Saving Sparse General Matrix-Matrix Mul¬tiplication for NVIDIA Pascal GPU.— 2017.— 08.— P. 101-110.
[25] OpenCL: Open Standard for Parallel Programming of Heterogeneous Systems // Khronos website. — 2020. — Access mode: https://www.khronos.org/opencl/ (online; accessed: 08.12.2020).
[26] Quantifying variances in comparative RNA secondary structure pre-diction / James Anderson, Adam Novak, Zsuzsanna Sukosd et al. // BMC bioinformatics. — 2013. — 05. — Vol. 14. — P. 149.
[27] Santos Fred, Costa Umberto, Musicante Martin. A Bottom-Up Algorithm for Answering Context-Free Path Queries in GraphDatabases. —2018. —01. —P. 225-233.—ISBN: 978-3-319-91661-3.
[28] Sparse matrix library (in Cuda). — Access mode: https://docs.nvidia.com/cuda/cusparse/ (online; accessed: 16.04.2021).
[29] T. Davis. The SuiteSparse Matrix Collection (the University of Florida Sparse Matrix Collection). — 2020. — Access mode: https://sparse.tamu.edu(online; accessed: 09.03.2021).
[30] The Khronos Working Group. OpenGL 4.4 Specification // Khronos Registry. — 2014. — Access mode: https://www.khronos.org/registry/OpenGL/specs/gl/glspec44.core.pdf (online; accessed: 08.12.2020).
[31] The Khronos Working Group. Vulkan 1.1 API Specification // Khronos Registry. — 2019. — Access mode: https://www.khronos.org/registry/vulkan/specs/1.1/html/vkspec.html (online; ac¬cessed: 08.12.2020).
[32] Yang Carl, Buluq Aydin, Owens John D. GraphBLAST: A High- Performance Linear Algebra-based Graph Framework on the GPU // arXiv preprint. — 2019.
[33] Yannakakis Mihalis. Graph-Theoretic Methods in Database Theory // Proceedings of the Ninth ACM SIGACT-SIGMOD-SIGART Sympo¬sium on Principles of Database Systems. — PODS ’90. — New York,
NY, USA : Association for Computing Machinery, 1990. — P. 230¬
242. — Access mode: https://doi.org/10.1145/298514.298576.
[34] Zheng Xin, Rugina Radu. Demand-driven Alias Analysis for C // SIGPLAN Not. — 2008. — Jan. — Vol. 43, no. 1. — P. 197-208. — Access mode: http://doi.acm.org/10.1145/1328897.1328464.
[35] A collection of CFPQ algorithms implemented in PyGraph- BLAS // Github. — 2020. — Access mode: https://github.com/JetBrains-Research/CFPQ_PyAlgo (online; accessed: 16.12.2020).
[2] Analysis of Recursive State Machines / Rajeev Alur, Michael Benedikt, Kousha Etessami et al. //ACM Trans. Program. Lang. Syst. — 2005. — Jul. — Vol. 27, no. 4. — P. 786-818. — Access mode: https://doi.org/10.1145/1075382.1075387.
[3] Azimov Rustam, Grigorev Semyon. Context-free path querying bymatrix multiplication. — 2018. — 06. — P. 1-10.
[4] Barcelo Baeza Pablo. Querying Graph Databases // Proceedings of the 32nd ACM SIGMOD-SIGACT-SIGAI Symposium on Principles of Database Systems. — PODS ’13. — New York, NY, USA : Associ¬ation for Computing Machinery, 2013. — P. 175-188. — Access mode: https://doi.org/10.1145/2463664.2465216.
[5] ClSPARSE: A Vendor-Optimized Open-Source Sparse BLAS Library / Joseph L. Greathouse, Kent Knox, Jakub Pola et al. // Proceedings of the 4th International Workshop on OpenCL. — IWOCL ’16. — New York, NY, USA : Association for Computing Machinery, 2016. — Ac¬cess mode: https://doi.org/10.1145/2909437.2909442.
[6] Context-Free Path Queries on RDF Graphs / Xiaowang Zhang, Zhiyong Feng, Xin Wang et al. // CoRR. — 2015. — Vol. abs/1506.00743. — 1506.00743.
[7] Context-Free Path Querying by Kronecker Product / Egor Orachev, Ilya Epelbaum, Rustam Azimov, Semyon Grigorev. — 2020. — 08. — P. 49-59. — ISBN: 978-3-030-54831-5.
[8] Context-Free Path Querying with Single-Path Semantics by MatrixMultiplication / Arseniy Terekhov, Artyom Khoroshev, Rustam Azi¬mov, Semyon Grigorev. — 2020. — 06. — P. 1-12.
[9] Dalton Steven, Bell Nathan, Olson Luke, Garland Michael. Cusp: Generic Parallel Algorithms for Sparse Matrix and Graph Computa-tions.— 2014.—Version 0.5.0. Access mode: http://cusplibrary.github.io/.
[10] 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. — Access mode: https://doi.org/10.1145/3322125.
[11] Direct3D 12 Graphics // Microsoft Online Documents. — 2018. — Ac¬cess mode: https://docs.microsoft.com/ru-ru/windows/win32/direct3d12/direct3d-12-graphics?redirectedfrom=MSDN (online; accessed: 08.12.2020).
[12] Evaluation of the Context-Free Path Querying Algorithm Based onMatrix Multiplication/ Nikita Mishin, Iaroslav Sokolov, Egor Spirin et al. — 2019.—06.—P. 1-5.
[13] An Experimental Study of Context-Free Path Query Evaluation Methods / Jochem Kuijpers, George Fletcher, Nikolay Yakovets, Tobias Lin- daaker // Proceedings of the 31st International Conference on Sci¬entific and Statistical Database Management. — SSDBM ’19. — New York, NY, USA : ACM, 2019.— P. 121-132. — Access mode: http://doi.acm.org/10.1145/3335783.3335791.
[14] Fast Algorithms for Dyck-CFL-Reachability with Applications to Alias Analysis / Qirun Zhang, Michael R. Lyu, Hao Yuan, Zhendong Su // SIGPLAN Not. — 2013. — Jun. — Vol. 48, no. 6. — P. 435-446. — Access mode: https://doi.org/10.1145/2499370.2462159.
[15] Graphs and grammars for Context-Free Path Querying algorithms evaluation // Github. — 2021. — Access mode: https://github.com/JetBrains-Research/CFPQ_Data(online; accessed: 11.03.2021).
[16] Graspan: A Single-Machine Disk-Based Graph System for Interpro-cedural Static Analyses of Large-Scale Systems Code / Kai Wang, Aftab Hussain, Zhiqiang Zuo et al. //SIGPLAN Not. — 2017.— Apr.—Vol. 52, no. 4. — P. 389-404. — Access mode: https://doi.org/10.1145/3093336.3037744.
[17] Hellings Jelle. Path Results for Context-free Grammar Queries on Graphs. — 2015. — 02.
[18] Hopcroft John E., Motwani Rajeev, Ullman Jeffrey D. Introduc¬tion to Automata Theory, Languages, and Computation (3rd Edi¬tion). — USA : Addison-Wesley Longman Publishing Co., Inc., 2006. — ISBN: 0321455363.
[19] Liu Weifeng, Vinter Brian. A Framework for General Sparse Matrix-Matrix Multiplication on GPUs and Heterogeneous Processors // J.Parallel Distrib. Comput. — 2015.—Nov.—Vol. 85, no. C. — P. 47- 61.—Access mode: https://doi.Org/10.1016/j.jpdc.2015.06.010.
[20] Mathematical foundations of the GraphBLAS / J. Kepner, P. Aaltonen, D. Bader et al. // 2016 IEEE High Performance Extreme Com¬puting Conference (HPEC). — 2016. — Sep.—P. 1-9.
[21] Medeiros Ciro, Musicante Martin, Costa Umberto. An Algorithm for Context-Free Path Queries over Graph Databases. — 2020. — 04.
[22] NVIDIA. CUDA Thrust // NVIDIA Developer Zone. — 2020. — Access mode: https://docs.nvidia.com/cuda/thrust/index.html(online; accessed: 16.12.2020).
[23] NVIDIA. CUDA Toolkit Documentation // NVIDIA Devel¬oper Zone. — 2020. — Access mode: https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html (online; accessed: 01.12.2020).
[24] Nagasaka Yusuke, Nukada Akira, Matsuoka Satoshi. High-Performance and Memory-Saving Sparse General Matrix-Matrix Mul¬tiplication for NVIDIA Pascal GPU.— 2017.— 08.— P. 101-110.
[25] OpenCL: Open Standard for Parallel Programming of Heterogeneous Systems // Khronos website. — 2020. — Access mode: https://www.khronos.org/opencl/ (online; accessed: 08.12.2020).
[26] Quantifying variances in comparative RNA secondary structure pre-diction / James Anderson, Adam Novak, Zsuzsanna Sukosd et al. // BMC bioinformatics. — 2013. — 05. — Vol. 14. — P. 149.
[27] Santos Fred, Costa Umberto, Musicante Martin. A Bottom-Up Algorithm for Answering Context-Free Path Queries in GraphDatabases. —2018. —01. —P. 225-233.—ISBN: 978-3-319-91661-3.
[28] Sparse matrix library (in Cuda). — Access mode: https://docs.nvidia.com/cuda/cusparse/ (online; accessed: 16.04.2021).
[29] T. Davis. The SuiteSparse Matrix Collection (the University of Florida Sparse Matrix Collection). — 2020. — Access mode: https://sparse.tamu.edu(online; accessed: 09.03.2021).
[30] The Khronos Working Group. OpenGL 4.4 Specification // Khronos Registry. — 2014. — Access mode: https://www.khronos.org/registry/OpenGL/specs/gl/glspec44.core.pdf (online; accessed: 08.12.2020).
[31] The Khronos Working Group. Vulkan 1.1 API Specification // Khronos Registry. — 2019. — Access mode: https://www.khronos.org/registry/vulkan/specs/1.1/html/vkspec.html (online; ac¬cessed: 08.12.2020).
[32] Yang Carl, Buluq Aydin, Owens John D. GraphBLAST: A High- Performance Linear Algebra-based Graph Framework on the GPU // arXiv preprint. — 2019.
[33] Yannakakis Mihalis. Graph-Theoretic Methods in Database Theory // Proceedings of the Ninth ACM SIGACT-SIGMOD-SIGART Sympo¬sium on Principles of Database Systems. — PODS ’90. — New York,
NY, USA : Association for Computing Machinery, 1990. — P. 230¬
242. — Access mode: https://doi.org/10.1145/298514.298576.
[34] Zheng Xin, Rugina Radu. Demand-driven Alias Analysis for C // SIGPLAN Not. — 2008. — Jan. — Vol. 43, no. 1. — P. 197-208. — Access mode: http://doi.acm.org/10.1145/1328897.1328464.
[35] A collection of CFPQ algorithms implemented in PyGraph- BLAS // Github. — 2020. — Access mode: https://github.com/JetBrains-Research/CFPQ_PyAlgo (online; accessed: 16.12.2020).
Работу высылаем на протяжении 30 минут после оплаты.
Заказать работу
Заявка на оценку стоимости
Это краткая форма заказа. После ее заполнения вы перейдете на полную форму заказа работы
Каталог работ (149774)
- Бакалаврская работа (38401)
- Диссертация (978)
- Магистерская диссертация (22149)
- Дипломные работы, ВКР (60481)
- Главы к дипломным работам (2138)
- Курсовые работы (10523)
- Контрольные работы (6265)
- Отчеты по практике (1357)
- Рефераты (1481)
- Задачи, тесты, ПТК (631)
- Ответы на вопросы (155)
- Статьи, Эссе, Сочинения (942)
- Бизнес-планы (51)
- Презентации (106)
- РГР (84)
- Авторефераты (РГБ) (1692)
- Диссертации (РГБ) (1882)
- Прочее (458)
Новости
06.01.2018
Помощь студентам и аспирантам в выполнении работ от наших партнеров
Помощь в выполнении учебных и научных работ на заказ ОФОРМИТЬ ЗАКАЗ
дальше»» Все новости
Статьи
- Где лучше заказывать диссертации и дипломные?
- Выполнение научных статей
- Подготовка диссертаций
- Подводные камни при написании магистерской работы
- Помощь в выполнении дипломных работ
»» Все статьи
Заказать работу
Заявка на оценку стоимости
Это краткая форма заказа. После ее заполнения вы перейдете на полную форму заказа работы