@inproceedings{BulucGilbert08,
        author={Bulu\c{c}, A. and Gilbert, J.},
        booktitle={IPDPS'80: 2008 IEEE Intl. Symp. on Parallel and Distributed Processing}, 
        title={On the representation and multiplication of hypersparse matrices}, 
        year={2008}, 
        volume={}, 
        number={}, 
        pages={1-11}, 
        note={\href{https://dx.doi.org/10.1109/IPDPS.2008.4536313}{https://dx.doi.org/10.1109/IPDPS.2008.4536313}},
        month={April},
}

@article{BulucGilbert12,
    author = {Bulu\c{c}, A. and Gilbert, J.},
    title = {Parallel Sparse Matrix-Matrix Multiplication and Indexing: Implementation and Experiments},
    journal = {SIAM Journal on Scientific Computing},
    volume = {34},
    number = {4},
    pages = {C170-C191},
    year = {2012},
    doi = {10.1137/110848244},
    note ={\href{https://dx.doi.org/10.1137/110848244}{https://dx.doi.org/10.1137/110848244}},
}



@book{Davis06book,
        author={Davis, T. A.},
        title={Direct Methods for Sparse Linear Systems},
        publisher={SIAM},
        year={2006},
        address={Philadelphia, PA},
        note={\href{https://dx.doi.org/10.1137/1.9780898718881}{https://dx.doi.org/10.1137/1.9780898718881}},
        abstract={
        Provides a basic overview of many sparse matrix algorithms
        and a simple sparse matrix data structure.
        A series of 42 lectures are available on YouTube; see the link at
        \href{http://faculty.cse.tamu.edu/davis/publications.html}
        {http://faculty.cse.tamu.edu/davis/publications.html}
        For the book, see
        \href{https://dx.doi.org/10.1137/1.9780898718881}{https://dx.doi.org/10.1137/1.9780898718881}},
}


@article{DavisRajamanickamSidLakhdar16,
        author={Davis, T. A. and Rajamanickam, S. and Sid-Lakhdar, W. M.},
        title={A survey of direct methods for sparse linear systems},
        journal={Acta Numerica},
        volume={25},
        year={2016},
        pages={383--566},
        numpages = {184},
        note={\href{https://dx.doi.org/10.1017/S0962492916000076}{https://dx.doi.org/10.1017/S0962492916000076}},
        abstract = {
        Abstract: Wilkinson defined a sparse matrix as one with
        enough zeros that it pays to take advantage of them.  This informal yet
        practical definition captures the essence of the goal of direct methods
        for solving sparse matrix problems. They exploit the sparsity of a
        matrix to solve problems economically: much faster and using far less
        memory than if all the entries of a matrix were stored and took part in
        explicit computations. These methods form the backbone of a wide range
        of problems in computational science. A glimpse of the breadth of
        applications relying on sparse solvers can be seen in the origins of
        matrices in published matrix benchmark collections (Duff and Reid
        1979a, Duff, Grimes and Lewis 1989a, Davis and Hu 2011). The goal of
        this survey article is to impart a working knowledge of the underlying
        theory and practice of sparse direct methods for solving linear systems
        and least-squares problems, and to provide an overview of the
        algorithms, data structures, and software available to solve these
        problems, so that the reader can both understand the methods and know
        how best to use them.
        DOI: 
        \href{https://dx.doi.org/10.1017/S0962492916000076}{https://dx.doi.org/10.1017/S0962492916000076}
        }
}

@techreport{spec,
        author={Bulu\c{c}, A. and Mattson, T. and McMillan, S. and Moreira, J. and Yang, C.},
        title={The {GraphBLAS} {C} {API} Specification},
        year={2017},
        note={\href{http://graphblas.org/}{http://graphblas.org/}},
}

@techreport{spec2,
        author={Brock, B. and Bulu\c{c}, A. and Mattson, T. and McMillan, S. and Moreira, J.},
        title={The {GraphBLAS} {C} {API} Specification (v2.0)},
        year={2021},
        note={\href{http://graphblas.org/}{http://graphblas.org/}},
}

@techreport{Kepner2017,
        author={Kepner, J.},
        title={{GraphBLAS} Mathematics},
        year={2017},
        note={
        \href{http://www.mit.edu/~kepner/GraphBLAS/GraphBLAS-Math-release.pdf}{http://www.mit.edu/$\sim$kepner/GraphBLAS/GraphBLAS-Math-release.pdf}
        }
}

@book{KepnerGilbert2011,
        author={Kepner, J. and Gilbert, J.},
        title={Graph Algorithms in the Language of Linear Algebra},
        publisher={SIAM},
        year={2011},
        address={Philadelphia, PA},
        annotate={\footnotesize
        From the preface: Graphs are among the most important
        abstract data types in computer science, and the algorithms that
        operate on them are critical to modern life. Graphs have been shown to
        be powerful tools for modeling complex problems because of their
        simplicity and generality. Graph algorithms are one of the pillars of
        mathematics, informing research in such diverse areas as combinatorial
        optimization, complexity theory, and topology. Algorithms on graphs are
        applied in many ways in today's world -- from Web rankings to metabolic
        networks, from finite element meshes to semantic graphs.
        The current exponential growth in graph data has forced a shift to
        parallel computing for executing graph algorithms. Implementing
        parallel graph algorithms and achieving good parallel performance have
        proven difficult. This book addresses these challenges by exploiting
        the well-known duality between a canonical representation of graphs as
        abstract collections of vertices and edges and a sparse adjacency
        matrix representation. This linear algebraic approach is widely
        accessible to scientists and engineers who may not be formally trained
        in computer science. The authors show how to leverage existing parallel
        matrix computation techniques and the large amount of software
        infrastructure that exists for these computations to implement
        efficient and scalable parallel graph algorithms. The benefits of this
        approach are reduced algorithmic complexity, ease of implementation,
        and improved performance.
        DOI: 
        \href{https://dx.doi.org/10.1137/1.9780898719918}{https://dx.doi.org/10.1137/1.9780898719918}},
}

@article{Luby86,
    author={Luby, M.},
    title={A simple parallel algorithm for the maximal independent set problem},
    year={1986},
    journal={SIAM J. Comput.},
    volume={15},
    number={4},
    note={\href{https://dx.doi.org/10.1137/0215074}{https://dx.doi.org/10.1137/0215074}}
}

@article{Davis19,
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},
note = {\href{https://doi.org/10.1145/3322125}{https://doi.org/10.1145/3322125}},
url = {https://doi.org/10.1145/3322125},
doi = {10.1145/3322125},
abstract = {SuiteSparse:GraphBLAS is a full implementation of the GraphBLAS standard, which defines a set of sparse matrix operations on an extended algebra of semirings using an almost unlimited variety of operators and types. When applied to sparse adjacency matrices, these algebraic operations are equivalent to computations on graphs. GraphBLAS provides a powerful and expressive framework for creating graph algorithms based on the elegant mathematics of sparse matrix operations on a semiring. An overview of the GraphBLAS specification is given, followed by a description of the key features and performance of its implementation in the SuiteSparse:GraphBLAS package.},
journal = {ACM Trans. Math. Softw.},
month = dec,
articleno = {44},
numpages = {25},
keywords = {sparse matrices, GraphBLAS, Graph algorithms}
}

@article{Davis22,
author = {Davis, Timothy A.},
title = {Algorithm 10xx: {SuiteSparse:GraphBLAS}: Parallel Graph Algorithms in the Language of Sparse Linear Algebra},
journal = {ACM Trans. Math. Softw.},
year = {2022},
note = {(submitted, revised Apr 3, 2022)}
}


@book{Higham,
        author={Higham, N.},
        title={Accuracy and Stability of Numerical Algorithms},
        edition={2nd},
        year={2002},
        publisher={SIAM},
        note={\href{https://dx.doi.org/10.1137/1.9780898718027}{https://dx.doi.org/10.1137/1.9780898718027}}
}

@article{Wathen,
        author={Wathen, A. J.},
        title={Realistic eigenvalue bounds for the {Galerkin} mass matrix},
        journal={{IMA} J. Numer. Anal.},
        volume=7,
        year={1987},
        pages={449--457},
        note={\href{https://dx.doi.org/10.1093/imanum/7.4.449}{https://dx.doi.org/10.1093/imanum/7.4.449} }}

@inproceedings{Davis18b,
        author={Davis, T. A.},
        title={Graph algorithms via {SuiteSparse:GraphBLAS}: triangle counting and {K}-truss},
        year={2018},
        booktitle={IEEE HPEC'18},
        note={Grand Challenge Innovation Award.
            See \href{http://www.ieee-hpec.org/}{http://www.ieee-hpec.org/}.},
        publisher={IEEE},
}

@inproceedings{DavisAznavehKolodziej19,
        author={Davis, T. A. and Aznaveh, M. and Kolodziej, S.},
        title={Write Quick, Run Fast: Sparse Deep Neural Network in 20 Minutes of
            Development Time via {SuiteSparse:GraphBLAS}},
        year={2019},
        note={Grand Challenge Champion, for high performance.
            See \href{http://www.ieee-hpec.org/}{http://www.ieee-hpec.org/}.},
        booktitle={IEEE HPEC'19},
        publisher={IEEE},
}

@inproceedings{Mattson19,
        author={Mattson, T. and Davis, T. A. and Kumar, M. and Bulu\c{c}, A. and McMillan, S. and
            Moreira, J. and Yang, C.},
        title={{LAGraph}: a community effort to collect graph algorithms built on top of the {GraphBLAS}},
        year={2019},
        booktitle={GrAPL'19: Workshop on Graphs, Architectures, Programming, and Learning},
        note={\href{https://hpc.pnl.gov/grapl/previous/2019}{https://hpc.pnl.gov/grapl/previous/2019},
            part of IPDPS'19, at \href{http://www.ipdps.org/ipdps2019} {http://www.ipdps.org/ipdps2019}},
        month={May},
        publisher={IEEE},
}

@inproceedings{Davis20,
  author = {Mohsen Aznaveh and
      Jinhao Chen and
      Timothy A. Davis and
      B{\'{a}}lint Hegyi and
      Scott P. Kolodziej and
      Timothy G. Mattson and
      G{\'{a}}bor Sz{\'{a}}rnyas},
  title = {Parallel {GraphBLAS} with {OpenMP}},
  year = {2020},
  booktitle = {CSC20, SIAM Workshop on Combinatorial Scientific Computing},
  note = {\href{https://www.siam.org/conferences/cm/conference/csc20}{https://www.siam.org/conferences/cm/conference/csc20}},
  publisher = {{SIAM}},
}


@INPROCEEDINGS{BulucMattsonMcMillanMoreiraYang17, 
    author={A. Bulu\c{c} and T. Mattson and S. McMillan and J. Moreira and C. Yang}, 
    booktitle={2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW)}, 
    title={Design of the {GraphBLAS} {API} for {C}}, 
    year={2017}, 
    volume={}, 
    number={}, 
    pages={643-652}, 
    keywords={C language;application program interfaces;formal
    specification;graph theory;linear algebra;C language specification
    subcommittee;GraphBLAS API;GraphBLAS Forum;application programming
    interface;betweenness centrality algorithm;design;graph
    computations;linear-algebraic building blocks;mathematical
    specification;Additives;Linear algebra;Programming;Semantics;Sparse
    matrices}, 
    note={\href{https://dx.doi.org/10.1109/IPDPSW.2017.117}{https://dx.doi.org/10.1109/IPDPSW.2017.117} },
    month={May},
}

@article{Gustavson78,
        author={Gustavson, F. G.},
        year={1978},
        title={Two Fast Algorithms for Sparse Matrices: Multiplication and Permuted Transposition},
        journal=TOMS,
        volume={4},
        number={3},
        pages={250--269},
        note={
        \href{https://dx.doi.org/10.1145/355791.355796}{https://dx.doi.org/10.1145/355791.355796}},
}

@inproceedings{10.1145/3229710.3229720,
author = {Nagasaka, Yusuke and Matsuoka, Satoshi and Azad, Ariful and Bulu\c{c}, Ayd\i{}n},
title = {High-Performance Sparse Matrix-Matrix Products on {Intel} {KNL} and Multicore Architectures},
year = {2018},
isbn = {9781450365239},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3229710.3229720},
note ={ \href{https://doi.org/10.1145/3229710.3229720}{https://doi.org/10.1145/3229710.3229720}},
doi = {10.1145/3229710.3229720},
booktitle = {Proceedings of the 47th International Conference on Parallel Processing Companion},
articleno = {Article 34},
numpages = {10},
keywords = {Intel KNL, SpGEMM, Sparse matrix},
location = {Eugene, OR, USA},
series = {ICPP ’18}
}

@misc{Green19_arxiv,
  doi = {10.48550/ARXIV.1907.02900},
  url = {https://arxiv.org/abs/1907.02900},
  author = {Green, Oded},
  keywords = {Data Structures and Algorithms (cs.DS), Databases (cs.DB),
  Distributed, Parallel, and Cluster Computing (cs.DC), FOS: Computer and
  information sciences, FOS: Computer and information sciences},
  title = {{HashGraph} -- Scalable Hash Tables Using A Sparse Graph Data Structure},
  publisher = {arXiv},
  year = {2019},
  copyright = {arXiv.org perpetual, non-exclusive license},
  note ={\href{https://arxiv.org/abs/1907.02900}{https://arxiv.org/abs/1907.02900}},
}

@article{Green19,
author = {Green, Oded},
title = {{HashGraph} -- Scalable Hash Tables Using a Sparse Graph Data Structure},
year = {2021},
issue_date = {June 2021},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {8},
number = {2},
issn = {2329-4949},
note = {\href{https://doi.org/10.1145/3460872}{https://doi.org/10.1145/3460872}},
url = {https://doi.org/10.1145/3460872},
doi = {10.1145/3460872},
abstract = {In this article, we introduce HashGraph, a new scalable approach for building hash tables that uses concepts taken from sparse graph representations—hence, the name HashGraph. HashGraph introduces a new way to deal with hash-collisions that does not use “open-addressing” or “separate-chaining,” yet it has the benefits of both these approaches. HashGraph currently works for static inputs. Recent progress with dynamic graph data structures suggests that HashGraph might be extendable to dynamic inputs as well. We show that HashGraph can deal with a large number of hash values per entry without loss of performance. Last, we show a new querying algorithm for value lookups. We experimentally compare HashGraph to several state-of-the-art implementations and find that it outperforms them on average 2\texttimes{} when the inputs are unique and by as much as 40\texttimes{} when the input contains duplicates. The implementation of HashGraph in this article is for NVIDIA GPUs. HashGraph can build a hash table at a rate of 2.5 billion keys per second on a NVIDIA GV100 GPU and can query at nearly the same rate.},
journal = {ACM Trans. Parallel Comput.},
month = {July},
articleno = {11},
numpages = {17},
keywords = {Hash table, sparse data structures, graph data structure}
}

