-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
Premise
- GraphBLAS implementations need to provide a choice for multiple data-structures of sparse and hyper sparse matrices and vectors to address performance concerns. CSR, CSC, COO, doubly indexed or doubly linked lists, etc. are some examples. The need to support Dynamic Graphs exacerbates the need.
- Choice of the optimal representation in GraphBLAS C-API 3.0 timeframe will not be automatically discerned by a GraphBLAS runtime. The application programmer can provide hints to the GraphBLAS programmer about the optimal choice of the data structure based on his knowledge of the sparsity of the matrices and fill patterns.
- The possibility of Rich Metadata associated with GraphBLAS matrices, a potential companion proposal is, highly synergistic with this proposal. The components of this Rich Metadata will comprise of data-structure of an GraphBLAS matrix or vector; run-time statistics of the operators, and in case of binary operators on GraphBLAS matrices, the left or right operands used with this GraphBLAS matrix or vector; and possibly information about the statistics on non-zero entries of the vectors or matrices.
Proposal: Main idea
This proposal targets GraphBLAS C-API 2.1. The main idea is to extend the signature of the Matrix_Dup and Vector_Dup instructions to include an additional and optional parameter (hint), the data-structure recommended by the application programmer. The main idea is to extend the signature of the Matrix_Dup and Vector_Dup instructions to include an additional and optional parameter, the data-structure recommended by the application programmer.
While the above extension is a succinct API call to change the data-structure underlying a GraphBLAS matrix or vector, there are additional or alternative approaches to achieve the same effect, namely
- Use Matrix_new with the additional parameter or hint followed by a vector or matrix assign
- Use Matrix_new followed with (GrB set?) with the additional parameter or hint followed by a vector or matrix assign
Problem Solved
- Choice of data-structure for matrices and vectors optimized for the operation being performed on them, and for the sparsity and distribution of non-zero elements, the choice being dictated by application programmer input
Details to be worked out
- The parameter values need to be standardized, i.e, the GraphBLAS standard needs to specify an ontology for the optional parameter values which establish the domain for the parameter values
- Since the calls discussed above can also be made without the optional parameter, in which case the library makes the choice of the data-structure to be used, the application program must be able to query the data-structure being used
- The application programmer should be able to query the data-structures permissible or supported in a GraphBLAS library
- Are there optional parameters other than the data-structure to be used. Should this collection of parameters be integrated into a single descriptor? (Note that the term descriptor used in GraphBLAS API call signatures for a different purpose, so we need a name for this collection of optional parameters.)
- Instead of embedding optional parameters in GraphBLAS API calls, shall we create an orthogonal channel for communication of pragmas from (or between) the application program and a GraphBLAS library.
Metadata
Metadata
Assignees
Labels
No labels