|
| 1 | +# LAGraph Working Group Meeting Minutes - March 11, 2026 |
| 2 | + |
| 3 | +## Attendees |
| 4 | +- [x] Tim Davis |
| 5 | +- [x] Gabe Gomez |
| 6 | +- [x] Piotr Luszczek |
| 7 | +- [x] Michel Pelletier |
| 8 | + |
| 9 | +## Agenda and Minutes |
| 10 | + |
| 11 | +**Agenda** by Tim Davis |
| 12 | + |
| 13 | +To discuss: replacing C pointers to array with `GrB_Vectors`, and replacing C |
| 14 | +input/output scalars with `GrB_Scalars`. This will cause additional breaking |
| 15 | +changes in the src/ methods, if we make this change. For example, |
| 16 | +`LAGr_Betweenness` takes as input `uint64_t *sources` and `int32_t ns`. This |
| 17 | +could be replaced by a single `GrB_Vector sources`, as is already done in |
| 18 | +`LAGr_EdgeBetweennessCentrality`. (So should `LAGr_Betweenness` be renamed to |
| 19 | +`LAGr_VertexBetweennessCentrality`?) |
| 20 | + |
| 21 | +Adding this `GrB_Vector` would also require a descriptor or flag to state which |
| 22 | +list of indices should be used for a vector v: the indices I or values X from |
| 23 | +an implicit `GrB_extracTuples (I, X, v)` on the vector. |
| 24 | + |
| 25 | +**Minutes** by Tim Davis |
| 26 | + |
| 27 | +We discussed the LAGraph API, using this spreadsheet: |
| 28 | +https://docs.google.com/spreadsheets/d/1-WnAsmrHRYh5KQeJZzMtZYZKiKblGKYOOIkw0MdokuU/edit?usp=sharing |
| 29 | + |
| 30 | +init/finalize discussion: |
| 31 | + |
| 32 | +option 1: |
| 33 | + `LAGr_Init`: needs an option to NOT initialize GraphBLAS (for symmetry) |
| 34 | + `LAGr_Finalize`: needs an option to NOT finalize GraphBLAS (important) |
| 35 | + |
| 36 | +option 2: |
| 37 | + `LAGr_Init`: checks if GrB has been init or not; keeps track if it called `G[rx]B_init` or not |
| 38 | + `LAGr_Finalize`: only calls `GrB_finalize` if `LAGr_Init` called `G[rx]B_init` |
| 39 | + |
| 40 | +we decided on option (2). |
| 41 | + |
| 42 | +`LAGr_Init` and `LAGr_Finalize`: need a method to ask if LAGraph has been initialized or not. |
| 43 | +`GrB_init` and `GrB_finalize`: need a method to ask if GraphBLAS has been finalized or not. |
| 44 | + |
| 45 | +See `MPI_Initialized` and `MPI_Finalized` |
| 46 | + |
| 47 | +Possible API: these could behave just like the MPI methods: |
| 48 | + |
| 49 | +- `GrB_Info GxB_initialized (int *flag)` |
| 50 | +- `GrB_Info GxB_finalized (int *flag)` |
| 51 | +- `GrB_Info LAGraph_Initialized (int *flag)` |
| 52 | +- `GrB_Info LAGraph_Finalized (int *flag)` |
| 53 | + |
| 54 | +Open question: can we do init, call LAGraph/GrB, then finalize, then init again, |
| 55 | + do more, finalize etc? Answer: yes. |
| 56 | + |
| 57 | +GrB: |
| 58 | + init: flag to say if GrB init has been called or not |
| 59 | + finalize: simply the negation of the init flag |
| 60 | + |
| 61 | + |
0 commit comments