graphflow
Distributed graph data structures and algorithms in PGAS model
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.7%) to scientific vocabulary
Repository
Distributed graph data structures and algorithms in PGAS model
Basic Info
- Host: GitHub
- Owner: lnikon
- License: mit
- Language: Jupyter Notebook
- Default Branch: main
- Size: 10 MB
Statistics
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 1
- Releases: 0
Metadata Files
README.md
Description
PGASGraph is a library that provides distributed graph algorithms and data structures. This library uses distributed vertex store as a underlying graph storage. PGASGraph is based on a UPCXX and uses Remote Procedure Calls (RPC) for communication, distributed objects, and global pointers provided by the UPCXX.
Supported graph storages
- + Distributed Vertex Store
Supported distributed algorithms
- + MST: Prim;
- + MST: Kruskal;
- - MST: GHS;
- + Gossip: Randomized Push; Broadcast;
- - Shortest paths;
- - Clustering;
- - Centrality;
- - Link analysis;
Requirements
Make sure that you've installed UPCXX and have correctly set $UPCXX_INSTALL environment variable.
For more information see official UPCXX wiki and INSTALL.md UPCXX.
Build
Launch ./scripts/ExecuteConan.sh/ and ./scripts/Build.sh
Dependencies
Library depends on Boost for program options parsing and CPU timer. Make sure that you've Boost libraries installed.
Cmake/ninja/make
Library can be built using Cmake. Following commands can be used to build the library using Cmake and ninja. Though, the use of ninja is not necessary and it can be safely replaced with usual make.
sh
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -G"Ninja" -DCMAKE_CXX_COMPILER=/usr/bin/g++
ninja
After these steps executable pgas-graph-test will be generated, execute it using upcxx-run wrapper e.g.
sh
upcxx-run -n4 ./pgas-graph-test
Manual
Using the following instructions you can build library manually. Once again, make sure that you've correctly set the $UPCXX_INSTALL variable.
sh
mkdir build && cd build
$UPCXX_INSTALL/bin/upcxx -codemode=opt -threadmode=seq -network=udp -std=c++17 -O -I../inc ../src/main.cpp ../src/graph-utilities.cpp ../src/pgas-graph.cpp -lboost_program_options -lboost_timer -o custom_build
Important UPCXX options here are codemode, threadmode and network.
As the library uses modern C++ features such as structured bindings or auto lambdas make sure to compile it with the -std=c++17 flag.
Distributed run notes
If you wish to make distributed run then make sure that you've compiled UPCXX with UDP or InfiniBand conduits.
Then make sure that you've correctly set the following variables. $SSH_SERVERS and $GASNET_SSH_SERVERS
contain IP's of those nodes which will participate in a distributed computation.
$GASNET_MASTERIP contains IP of the node which initiates the computation. It's very important to set this variable.
$SSH_SERVERS=111.111.11.11,111.111.11.12
$GASNET_SSH_SERVERS=${SSH_SERVERS}
$GASNET_MASTERIP=10.0.0.30
$UPCXX_NETWORK=udp
Performance Evaluation
ToDo
- REST Server to serve UPCXX computation requests.
- Add command line option to choose computation algorithm.
- Add command line option to choose graph generation algorithm.
- Add input graph parsing.
- Export graph in JSON format.
Owner
- Name: Vahag Bejanyan
- Login: lnikon
- Kind: user
- Location: Yerevan, Armenia
- Company: Questrade
- Website: https://%D5%BE%D5%A1%D5%A3%D5%A1%D5%A3.%D5%B0%D5%A1%D5%B5
- Repositories: 8
- Profile: https://github.com/lnikon
C++ Software Engineer with interests in Graph Theory, Machine Learning, and High-Performance Computing.
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: GraphFlow
message: >-
Distributed graph data structures and algorithms in PGAS
model
type: software
authors:
- given-names: Vahag Bejanyan
email: bejanyan.vahag@pm.me
affiliation: BSc
orcid: 'https://orcid.org/0000-0002-0842-7776'
repository-code: 'https://github.com/lnikon/graphflow'
keywords:
- graph
- hpc
- parallel
- distributed
- scalability
license: MIT
GitHub Events
Total
Last Year
Dependencies
- BASE latest build
- UPCXX_BUILD_INSTALL latest build
- ubuntu latest build
- Jinja2 ==3.1.2
- MarkupSafe ==2.1.1
- Pillow ==9.2.0
- Pygments ==2.13.0
- QtPy ==2.2.1
- Send2Trash ==1.8.0
- anyio ==3.6.2
- argon2-cffi ==21.3.0
- argon2-cffi-bindings ==21.2.0
- asttokens ==2.0.8
- attrs ==22.1.0
- backcall ==0.2.0
- beautifulsoup4 ==4.11.1
- bleach ==5.0.1
- cffi ==1.15.1
- contourpy ==1.0.5
- cycler ==0.11.0
- debugpy ==1.6.3
- decorator ==5.1.1
- defusedxml ==0.7.1
- entrypoints ==0.4
- executing ==1.1.1
- fastjsonschema ==2.16.2
- fonttools ==4.38.0
- idna ==3.4
- ipykernel ==6.16.1
- ipython ==8.5.0
- ipython-genutils ==0.2.0
- ipywidgets ==8.0.2
- jedi ==0.18.1
- jsonschema ==4.16.0
- jupyter ==1.0.0
- jupyter-console ==6.4.4
- jupyter-server ==1.21.0
- jupyter_client ==7.4.3
- jupyter_core ==4.11.2
- jupyterlab-pygments ==0.2.2
- jupyterlab-widgets ==3.0.3
- kiwisolver ==1.4.4
- matplotlib ==3.6.1
- matplotlib-inline ==0.1.6
- mistune ==2.0.4
- nbclassic ==0.4.5
- nbclient ==0.7.0
- nbconvert ==7.2.2
- nbformat ==5.7.0
- nest-asyncio ==1.5.6
- networkx ==2.8.7
- notebook ==6.5.1
- notebook_shim ==0.2.0
- numpy ==1.23.4
- packaging ==21.3
- pandocfilters ==1.5.0
- parso ==0.8.3
- pexpect ==4.8.0
- pickleshare ==0.7.5
- prometheus-client ==0.15.0
- prompt-toolkit ==3.0.31
- psutil ==5.9.3
- ptyprocess ==0.7.0
- pure-eval ==0.2.2
- pycparser ==2.21
- pyparsing ==3.0.9
- pyrsistent ==0.18.1
- python-dateutil ==2.8.2
- pyzmq ==24.0.1
- qtconsole ==5.3.2
- six ==1.16.0
- sniffio ==1.3.0
- soupsieve ==2.3.2.post1
- stack-data ==0.5.1
- terminado ==0.16.0
- tinycss2 ==1.2.1
- tornado ==6.2
- traitlets ==5.5.0
- wcwidth ==0.2.5
- webencodings ==0.5.1
- websocket-client ==1.4.1
- widgetsnbextension ==4.0.3