All Projects → JuliaSparse → SuiteSparseGraphBLAS.jl

JuliaSparse / SuiteSparseGraphBLAS.jl

Licence: MIT license
Sparse, General Linear Algebra for Graphs!

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to SuiteSparseGraphBLAS.jl

awesome-dynamic-graphs
A collection of resources on dynamic/streaming/temporal/evolving graph processing systems, databases, data structures, datasets, and related academic and industrial work
Stars: ✭ 89 (+12.66%)
Mutual labels:  graphs, graph-analytics
Graphs.jl
An optimized graphs package for the Julia programming language
Stars: ✭ 197 (+149.37%)
Mutual labels:  graphs, graph-analytics
awesome-knowledge-graphs
Graph databases, Knowledge Graphs, SPARQ
Stars: ✭ 56 (-29.11%)
Mutual labels:  graphs
graphite
Haskell graphs and networks library
Stars: ✭ 31 (-60.76%)
Mutual labels:  graphs
rustgraphblas
rust-library to wrap GraphBLAS.h
Stars: ✭ 23 (-70.89%)
Mutual labels:  graphblas
MetaGraphsNext.jl
This is an experimental, type-stable replacement for MetaGraphs
Stars: ✭ 50 (-36.71%)
Mutual labels:  graphs
js-data-structures
🌿 Data structures for JavaScript
Stars: ✭ 56 (-29.11%)
Mutual labels:  graphs
The-Stata-Guide
Files for the Stata Guide on Medium https://medium.com/the-stata-guide
Stars: ✭ 105 (+32.91%)
Mutual labels:  graphs
arcdiagram
R package arcdiagram
Stars: ✭ 75 (-5.06%)
Mutual labels:  graphs
ntds 2019
Material for the EPFL master course "A Network Tour of Data Science", edition 2019.
Stars: ✭ 62 (-21.52%)
Mutual labels:  graphs
CovidIndiaStats
A dashboard to visualise the spread of covid19 in India(state and districtwise) and around the world(countrywise).
Stars: ✭ 22 (-72.15%)
Mutual labels:  graphs
ldbc snb docs
Specification of the LDBC Social Network Benchmark suite
Stars: ✭ 39 (-50.63%)
Mutual labels:  graphs
Advanced-Shortest-Paths-Algorithms
Java Code for Contraction Hierarchies Algorithm, A-Star Algorithm and Bidirectional Dijkstra Algorithm. Tested and Verified Code.
Stars: ✭ 63 (-20.25%)
Mutual labels:  graphs
graphql
A GraphQL to Cypher query execution layer for Neo4j and JavaScript GraphQL implementations.
Stars: ✭ 397 (+402.53%)
Mutual labels:  graphs
dawgdic
Automatically exported from code.google.com/p/dawgdic
Stars: ✭ 20 (-74.68%)
Mutual labels:  graphs
WikiChron
Data visualization tool for wikis evolution
Stars: ✭ 19 (-75.95%)
Mutual labels:  graphs
StaticGraphs.jl
Memory-efficient immutable LightGraphs.
Stars: ✭ 33 (-58.23%)
Mutual labels:  graphs
corona cases
🦠 Coronavirus Information on Telegram Chatbot
Stars: ✭ 19 (-75.95%)
Mutual labels:  graphs
sparklines
Text-based sparkline command line mimicking those of Edward Tuft.
Stars: ✭ 84 (+6.33%)
Mutual labels:  graphs
gfapy
Gfapy: a flexible and extensible software library for handling sequence graphs in Python
Stars: ✭ 54 (-31.65%)
Mutual labels:  graphs

SuiteSparseGraphBLAS.jl

A fast, general sparse linear algebra and graph computation package, based on SuiteSparse:GraphBLAS.

Installation

using Pkg
Pkg.add("SuiteSparseGraphBLAS")

Benchmarks

julia> using SuiteSparseGraphBLAS
# Standard arithmetic semiring (+, *) matrix multiplication
julia> s = sprand(Float64, 100000, 100000, 0.05);
julia> v = sprand(Float64, 100000, 1000, 0.1);
julia> @btime s * v
  157.211 s (8 allocations: 1.49 GiB)
julia> s = GBMatrix(s); v = GBMatrix(v);
# Single-threaded
julia> @btime s * v
  54.649 s (26 allocations: 1.49 GiB)
# 2 threads
julia> @btime s * v
  30.258 s (26 allocations: 1.50 GiB)
# 4 threads
julia> @btime s * v
  21.738 s (26 allocations: 1.54 GiB)

# Indexing
julia> s = sprand(Float64, 100000, 100000, 0.05);
julia> @btime s[1:10:end, end:-10:1]
  344.355 ms (11 allocations: 76.32 MiB)
julia> s = GBMatrix(s);
julia> @btime s[1:10:end, end:-10:1]
  81.750 ms (39 allocations: 152.49 MiB)

Citing SuiteSparse:GraphBLAS

If you use SuiteSparseGraphBLAS.jl in your research please cite the following three papers:

pdf:

    @article{10.1145/3322125,
    author = {Davis, Timothy A.},
    title = {Algorithm 1000: SuiteSparse:GraphBLAS: Graph Algorithms in the Language of Sparse Linear Algebra},
    year = {2019},
    issue_date = {December 2019},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    volume = {45},
    number = {4},
    issn = {0098-3500},
    url = {https://doi.org/10.1145/3322125},
    doi = {10.1145/3322125},
    journal = {ACM Trans. Math. Softw.},
    month = {dec},
    articleno = {44},
    numpages = {25},
    keywords = {GraphBLAS, Graph algorithms, sparse matrices}
    }

pdf:

    @article{GraphBLAS7,
  author = {Davis, Timothy A.},
  title = {Algorithm 10xx: SuiteSparse:GraphBLAS: Graph Algorithms in the Language of Sparse Linear Algebra},
  year = {2022},
  journal = {ACM Trans. Math. Softw.},
  month = {(under revision)},
  note={See GraphBLAS/Doc/toms_parallel_grb2.pdf},
  keywords = {GraphBLAS, Graph algorithms, sparse matrices}
}

pdf:

@INPROCEEDINGS{9622789,
author={Pelletier, Michel and Kimmerer, Will and Davis, Timothy A. and Mattson, Timothy G.},
booktitle={2021 IEEE High Performance Extreme Computing Conference (HPEC)},
title={The GraphBLAS in Julia and Python: the PageRank and Triangle Centralities},
year={2021},
pages={1-7},
doi={10.1109/HPEC49654.2021.9622789},
ISSN={2643-1971},
month={Sep.}
}

Acknowledgements

This work was funded as part of Google Summer of Code over 3 summers, 2 of which were for Abhinav Mehndiratta and the last of which was for William Kimmerer.

Original author: Abhinav Mehndiratta

SuiteSparse author: Tim Davis

Mentors: Viral B Shah, Miha Zgubic, Tim Davis

Current maintainer: William Kimmerer

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].