Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
228 commits
Select commit Hold shift + click to select a range
ade1e99
Feat: intial commit with draft version of CFL algorithm with
homka122 May 5, 2025
8b16e59
Feat: add algorithm with optimization to header
homka122 May 5, 2025
2cdcee7
Feat: add measure time macro
homka122 May 5, 2025
9548c1e
Feat: add null check to mxm
homka122 May 10, 2025
4660261
Refactor: replace apply to ewiseAdd
homka122 May 10, 2025
6bd45f2
Feat: replace apply to dup method
homka122 May 10, 2025
76bc80a
Fix: type in printf while iteration
homka122 May 11, 2025
4115a05
Refactor: apply mask now seperate function
homka122 May 11, 2025
838ad5b
Refactor: now bench information output only with flag
homka122 May 12, 2025
7d113dd
Feat: add ISO check to rsub
homka122 May 12, 2025
0433361
Refactor: iteration info now print if flag set
homka122 May 12, 2025
155e609
Feat: add null check in first mxm
homka122 May 12, 2025
8dc7d1d
Feat: now empty optimization is seperate
homka122 May 12, 2025
08ab76c
Feat: add rsub, wise and dup with format optimization
homka122 May 12, 2025
4668c88
Feat: add mxm format optimization
homka122 May 14, 2025
45aaf82
Refactor: delete unused comments
homka122 May 14, 2025
fe16527
Fix: change NULL to GrB_NULL
homka122 May 14, 2025
b198dd3
Fix: change dup method according to format optimization
homka122 May 14, 2025
54ba2b8
Feat: add clear methods with optimization
homka122 May 14, 2025
9c7c923
Feat: add change format methods
homka122 May 14, 2025
067fb3a
Feat: process result of matrix_mxm
homka122 May 14, 2025
ba335af
Fix: now all methods in empty wise use format methods
homka122 May 14, 2025
8877469
Refactor: change rsub method with format optim
homka122 May 14, 2025
a5b9f0e
Refactor: change wise method with format optimization
homka122 May 14, 2025
0a59d20
Fix: fix wrong type in for cycle
homka122 May 14, 2025
0bc599f
Fix: change GrB clear method to mine
homka122 May 14, 2025
135ba92
Feat: add rmxm method
homka122 May 14, 2025
e85a7c1
Fix: incompitible type of for cycle
homka122 May 14, 2025
e95dbad
Refactor: delete unused variables
homka122 May 14, 2025
3756ed9
Feat: delete unused sync format method
homka122 May 14, 2025
539260d
Feat: use more optimize methods in wise method
homka122 May 14, 2025
007c6b7
Feat: manually choose format in wise and dup method
homka122 May 14, 2025
36ffc72
Fix: wrong type in for cycle
homka122 May 14, 2025
a180624
Feat: now update Matrix object in place
homka122 May 14, 2025
cf89d6a
Feat: delete seperate rmxm method
homka122 May 14, 2025
901323d
Refactor: matrix mxm with swap operation
homka122 May 14, 2025
61f90aa
Feat: add lazy optimization
homka122 May 14, 2025
fd2502e
Fix: change < to <=
homka122 May 15, 2025
7b0a5e1
Feat: use lazy optimization
homka122 May 15, 2025
935baef
Feat: add flags for turn on optimizations on runtime
homka122 May 15, 2025
aa0dd4a
Feat: matrix_print_lazy now accepts pointer
homka122 May 15, 2025
7184953
Feat: add naming for matrices in methods
homka122 May 15, 2025
66d55a8
Feat: lazy optimizations now works
homka122 May 15, 2025
6d97d82
Fix: erase matrix when accum true in mxm
homka122 May 15, 2025
146d58c
Feat: add sort and combine function to lazy optimization
homka122 May 16, 2025
bd2c142
Fix: some memory leaks
homka122 May 17, 2025
c0eae50
Feat: now matrix has not just mxm size
homka122 May 17, 2025
bc0af0d
Feat: Add fields to Matrix object for block matrices
homka122 May 21, 2025
eb313af
Feat: change rule parsing
homka122 May 21, 2025
9be8a15
Feat: implement block mxm operation
homka122 May 22, 2025
cc23b24
Fix: first mxm need accum operator for correct result
homka122 May 22, 2025
e6a77bf
Feat: implement wise block operation
homka122 May 23, 2025
8249fc1
Feat: add create and free methods for Matrix structure
homka122 May 23, 2025
6225f49
Feat: implement rsub block operation
homka122 May 23, 2025
3595a8f
Feat: add block hyper rotate method
homka122 May 23, 2025
c0adbab
Feat: add block matrix to diag method
homka122 May 23, 2025
caddbf1
Feat: add block matrix reduce method
homka122 May 23, 2025
b7e68b8
Fix: wrong type input
homka122 May 23, 2025
3359d61
Feat: add method matrix -> block vector
homka122 May 23, 2025
c79861f
Fix: fix bug when dublicate adj matrices
homka122 May 23, 2025
5f96e31
Fix: compiler warnings
homka122 May 23, 2025
6b25fa4
Fix: copy graph matrix from ajd
homka122 May 23, 2025
c030cca
Feat: add block optimization choice
homka122 May 23, 2025
3aea853
Feat: now implicitly declare that graph matrices are lazy
homka122 May 23, 2025
68301f9
Fix: is lazy check in rsub function
homka122 May 23, 2025
d734683
Fix: update base matrix nnz before calc in lazy matrix
homka122 May 25, 2025
7c17e47
Refactor: algorithm now accepth symbol count
homka122 May 25, 2025
8440287
Feat: sort matrices before find acc
homka122 May 25, 2025
9cf80c2
Feat: new way checking changing graph
homka122 May 25, 2025
b99cc1b
Refactor: make more useful matrix printing
homka122 May 25, 2025
ee4ffa4
Feat: add simple rules adding to matrices
homka122 May 25, 2025
e166fc1
Refactor: move custom methods definition
homka122 May 25, 2025
5b73708
Feat: now delta matrices dublicates from adj matrices
homka122 May 25, 2025
5502c89
Refactor: rework print lazy method
homka122 May 25, 2025
6ce43b0
Fix: check is lazy status in mxm lazy method
homka122 May 25, 2025
b0d3f53
Feat: add iadd interpration to wise methods
homka122 May 25, 2025
5100773
Fix: problems with sorting in mxm lazy
homka122 May 25, 2025
2e63e5f
Fix: update matrix after combine base matrices
homka122 May 25, 2025
08a19c9
Refactor: now use TRY macro
homka122 May 25, 2025
df5cdea
Fix: return from block mxm is both matrices are cell
homka122 May 25, 2025
8a1b404
Fix: use lazy matrices with lazy optimization and higher
homka122 May 25, 2025
88f25bd
Fix: wise_block
homka122 May 25, 2025
c05d6c0
Fix: forget update matrix after changing
homka122 May 25, 2025
e0841c0
Fix: now if symbol is indexed matrix is block
homka122 May 25, 2025
61ada93
Feat: add print_graph_info function
homka122 May 30, 2025
22e4c4c
Fix: add method for dup block matrices
homka122 May 30, 2025
8c85e4e
Fix: bug that lazy matrix didn't create
homka122 May 30, 2025
6b59c0f
Fix: matrix mxm now can multiply not only square matrices
homka122 May 30, 2025
46608e1
Feat: create temp matrix in mxm block
homka122 May 30, 2025
513aeca
Refactor: matrix dup now uses a different method
homka122 May 30, 2025
f49a6b2
Fix: hyper rotate method
homka122 May 30, 2025
697d23c
Feat: add aditional check in matrix update
homka122 May 30, 2025
6865893
Fix: assert condition in rsub block
homka122 Jun 7, 2025
3bf3ba4
Feat: check result of rsub methods
homka122 Jun 7, 2025
595a2cb
Fix: fix order of flags
homka122 Oct 13, 2025
af498f8
Refactor: delete unused T matrix from prev algo
homka122 Oct 13, 2025
2b8337b
Refactor: delete whitespaces after if statement
homka122 Oct 15, 2025
8f57591
Feat: move functions with optimized matrices in seperate file
homka122 Oct 15, 2025
b87cead
Refactor: move optimizations methods to seperate file
homka122 Oct 15, 2025
2334b27
Refactor: delete unused code and fix types of structures
homka122 Oct 15, 2025
c7ba5c0
test: add tests for adv algorithm
homka122 Oct 16, 2025
9941af1
Fix: delete files with algorithm
homka122 Oct 16, 2025
28c6696
Fix: delete unused files
homka122 Oct 17, 2025
94aecfb
fix: update nvals before reading it
spisladqo Oct 31, 2025
89756bf
test: add tests for optimized matrix
homka122 Oct 22, 2025
aa2d64a
Test: add tests for matrix_opt: wise, rsub, format optimization
homka122 Nov 3, 2025
ae1daff
Test: add tests for matrix_opt: empty optimization
homka122 Nov 3, 2025
39bf9da
Refactor: now matrix_to_base don't modify input matrix
homka122 Nov 3, 2025
9608e2b
Feat: add dup_lazy
homka122 Nov 3, 2025
f1b4a5c
Fix: delete unused sort of matrices
homka122 Nov 3, 2025
098bc8c
Fix: delete unreacheable block of code in rsub
homka122 Nov 3, 2025
a6e0148
Test: add tests for lazy optimization
homka122 Nov 3, 2025
15bdb6b
Refactor: reformat matrix_opt file
homka122 Nov 4, 2025
eb151f3
Refactor: comment print debug functions
homka122 Nov 4, 2025
d13785c
Test: add block tests for matrix_opt
homka122 Nov 4, 2025
29bfba9
Test: refactor tests for matrix_opt for coverage
homka122 Nov 4, 2025
cd90d5e
Fix: memory leaks in matrix_opt and in tests for opts
homka122 Nov 4, 2025
e76f729
copy LAGraph_CFL_reachability.c as a template
spisladqo May 17, 2025
7b84b14
add initialization of src matrices and error checks, update doc
spisladqo May 18, 2025
8bc5a3b
add initialization for vertices' terminals rules
spisladqo May 18, 2025
cd3ca6c
add final steps of algorithm, remove extra steps
spisladqo May 18, 2025
0f96e3a
add CFL_reachability_multsrc to header
spisladqo May 19, 2025
9cc8cb7
add tests structure for CFL_reachabiliy_multsrc
spisladqo May 19, 2025
1450390
copy tests for all-sources CFL reachability
spisladqo May 19, 2025
955419e
fix bugs with continue in loop, add debug prints
spisladqo May 19, 2025
cc91c19
fix bug with src vertices in test
spisladqo May 19, 2025
f840dc4
fix some memory leaks
spisladqo May 19, 2025
d3db708
fix incorrect check for if matrices were changed
spisladqo May 19, 2025
f509bc4
remove unneeded check that was made earlier
spisladqo May 20, 2025
63d6243
add more tests
spisladqo May 20, 2025
eca0c90
fix return on invalid parameters and add more tests, 100% cov
spisladqo Jul 12, 2025
7312361
update (c) 2024 -> 2025 in doc-comments
spisladqo Jul 12, 2025
5529fe5
add copy of multsrc CFL to add optimizations to
spisladqo Jul 28, 2025
b547d5a
put matrix initialization out of loop
spisladqo Aug 7, 2025
574a0fb
add draft of incremental optimization
spisladqo Aug 23, 2025
2b78acd
add step 2 for 1st optimization
spisladqo Sep 24, 2025
81dd68c
add fast algo to LAGraphX.h
spisladqo Sep 28, 2025
16dc8f2
add step 3 for 1st optimization
spisladqo Sep 28, 2025
3d73fe6
remove matrix M
spisladqo Sep 28, 2025
cf6de8c
add optimizations mask to algo interface
spisladqo Sep 29, 2025
6db6bb0
use Homka122's CFL_Matrix in multsrc fast algo
spisladqo Oct 15, 2025
162ff34
change all operations to specific CFL-optimized ones
spisladqo Oct 15, 2025
580ff00
fix tests, they compare output matrix directly now
spisladqo Oct 16, 2025
2cb0d7e
fix creation of dT matrices, add CFL_optimized things in header
spisladqo Oct 17, 2025
4ea49bc
fix: matrix_to_format when matrix contains both formats
spisladqo Oct 31, 2025
2f79741
feat: make more readable error msg in multsrc tests, add free(result_…
spisladqo Oct 31, 2025
3d879a8
fix: add CFL_matrix_to_base
spisladqo Nov 4, 2025
3b79c1c
fix: don't work on base matrices directly, delete outdated comments
spisladqo Nov 5, 2025
4502cca
feat: instead of working with T, work with dT
spisladqo Nov 5, 2025
c6873de
fix: update T and dT side-by-side
spisladqo Nov 6, 2025
117ca9c
refactor: delete unused variables and comments
spisladqo Nov 6, 2025
9098b43
fix: add missing free
spisladqo Nov 10, 2025
5fde186
feat: 100% cov
spisladqo Nov 19, 2025
cda9498
feat: little optimization of multsrc reachability, remove walls of co…
spisladqo Nov 19, 2025
b52f3e2
Feat: change API with opt methods
homka122 Mar 7, 2026
9e4c4bb
Fix: algorithm change input adj_matrices
homka122 Oct 22, 2025
aafa0da
Refactor: apply clang-format to code
homka122 Nov 1, 2025
3859ee8
Fix: change matrix_to_base function
homka122 Nov 4, 2025
8de28d0
Fix: add adv algorithm signature to LAGraphX.h
homka122 Nov 4, 2025
f2edc70
Test: add tests for adv CFL reachability algorithm
homka122 Nov 4, 2025
d506548
Feature: add LAGraph_rule_EWCNF
homka122 Dec 23, 2025
9667bc0
Feat: now adv algorithm can process EWCNF rules
homka122 Jan 29, 2026
4ddb060
Fix: fix adv algo tests with EWCNF rules
homka122 Jan 29, 2026
743d40e
Feat: add to print_matrix utility func optimization flag
homka122 Jan 29, 2026
319139c
Fix: fix memory leaks in adv algorithm
homka122 Jan 29, 2026
dda6cbd
Fix: fix memory leak with symbols
homka122 Feb 2, 2026
2abf7a4
Fix: fix dimension dismatch to output part of algorithm
homka122 Feb 2, 2026
8f195c1
Fix: rewrite opt operaions for memory leaks fix
homka122 Feb 2, 2026
975e01e
Fix: bug with unupdate matrix
homka122 Feb 3, 2026
0cc48ba
Feat: add TRY_I macros
homka122 Mar 7, 2026
98d40cd
Feat: add BENCH_CFL_REACHBILITY macro for debug purpose
homka122 Mar 7, 2026
f435774
Refactor: now use TRY macro for every GrB\LG call
homka122 Mar 7, 2026
4aea124
Refactor: change calls to opt methods because of changing API
homka122 Mar 7, 2026
523af1a
Test: add new grammars for indexed rules
homka122 Mar 7, 2026
310c59f
Test: add two new graphs for tests
homka122 Mar 7, 2026
3494e30
Test: add new indexed tests for adv CFL algo
homka122 Mar 7, 2026
ee66d39
Fix: fix matrix_update call with new API
homka122 Mar 7, 2026
b0170d0
Fix: fix wrong free symbols in LG_FREE_WORK
homka122 Mar 7, 2026
db9e27d
Test: fix memory leaks and heap overflow in tests
homka122 Mar 7, 2026
4f30db8
Refactor: delete unuserd debug prints
homka122 Mar 7, 2026
907388d
Refactor: use new CFL_create functions
homka122 Mar 7, 2026
f16c7f2
Refactor: simplify getting outputs matrices
homka122 Mar 7, 2026
8de3218
Refactor: add documentations of inner functions in adv CFL algo
homka122 Mar 7, 2026
f4b64fa
Refactor: add TRY_INNER macro for helper functions
homka122 Mar 7, 2026
c031b51
Feat: add CFL matrix split method
homka122 Mar 7, 2026
c9f5672
Docs: adjust description of adv CFL reachability algorithm
homka122 Mar 7, 2026
364ecdb
Fix: change initial capacity for dynamic arrays
homka122 Mar 7, 2026
92d4878
Test: add new indexed test
homka122 Mar 7, 2026
8601242
Fix: revert CMakeLists.txt changes
homka122 Mar 7, 2026
7ca2e72
Refactor: now making new symbols is seperate function
homka122 Mar 7, 2026
35ad275
Refactor: now making new adj matrices in seperate function
homka122 Mar 7, 2026
aac06a6
Refactor: now making new rules in seperate function
homka122 Mar 7, 2026
9573504
Refactor: move CFL methods to seperate header file
homka122 Mar 8, 2026
cc4f1d4
Refactor: fix TODO in matrix opt methods
homka122 Mar 8, 2026
bc3db8a
Refactor: refactor LG_FREE_ALL macro in adv CFL algo
homka122 Mar 8, 2026
4b3d096
Refactor: comment unused code in matrix opt
homka122 Mar 8, 2026
5f55316
Tests: add tests for block format hyper rotate
homka122 Mar 8, 2026
5a3d8a2
Tests: fix test and add new for adv algo
homka122 Mar 8, 2026
598e947
add CFL_reachability_multsrc to header
spisladqo May 19, 2025
66d96d8
feat: use updated interface of optimized cfl
spisladqo Apr 4, 2026
5d94fd3
fix: update required format in matrix_to_format
spisladqo Apr 4, 2026
fb82a98
docs: update year in multsrc cfl algos and tests
spisladqo Apr 4, 2026
06f8dfc
ref: rename multsrc_fast into multsrc_adv
spisladqo Apr 4, 2026
2d00f7c
fix: matrix_mxm_lazy when first is lazy
spisladqo Apr 4, 2026
9a94a42
fix: only T[i] are created lazy now
spisladqo Apr 4, 2026
9104c8a
test: add separate test file for multsrc_adv algo
spisladqo Apr 4, 2026
21d8956
test: update multsrc_adv tests to run under multiple optmasks
spisladqo Apr 5, 2026
67cc774
fix: order in test results doesn't matter now
spisladqo Apr 5, 2026
6df0c73
feat: now multsrc_adv can use block optimization, and updated interface
spisladqo Apr 5, 2026
a16609e
test: updated tests for new interface
spisladqo Apr 5, 2026
3d4ef6e
ref: got rid of Adj opt matrices
spisladqo Apr 18, 2026
75ce8e7
fix: change MAX_MASK in ms adv tests to 15=0b1111
spisladqo Apr 18, 2026
d97c67b
ref: delete useless commented code in ms adv
spisladqo Apr 18, 2026
1ae56e7
ref: make masks in ms adv tests more clear
spisladqo Apr 18, 2026
68c1a9d
ref: delete useless comments in both ms algos
spisladqo Apr 18, 2026
641f748
feat: revisit multsrc_adv
spisladqo Jun 25, 2026
e4ebb0d
feat: remove useless steps
spisladqo Jul 10, 2026
ae308ed
feat: rename dT and remove extra step
spisladqo Jul 12, 2026
18d11ed
feat: add export commented out
spisladqo Jul 12, 2026
a6547c2
fix: memory leaks
spisladqo Jul 13, 2026
d9e6441
feat: add time tracking
spisladqo Jul 19, 2026
c39de05
fix: docs comment for adv algo
spisladqo Jul 19, 2026
9b6c205
feat: add handy time counting macro, delete dead comms
spisladqo Aug 9, 2026
5a3ecb7
ref: add LG_ASSERT_MSG, tidy up code
spisladqo Aug 30, 2026
36546d8
docs: add more comment docs
spisladqo Aug 30, 2026
6280438
fix: header and unused variable
spisladqo Sep 6, 2026
b4d164f
docs: update functions doc-comments
spisladqo Sep 6, 2026
1f70699
fix: revert lg_assert_msg
spisladqo Sep 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,373 changes: 1,373 additions & 0 deletions experimental/algorithm/LAGraph_CFL_optimized_matrix_opt.c

Large diffs are not rendered by default.

106 changes: 106 additions & 0 deletions experimental/algorithm/LAGraph_CFL_optimized_matrix_opt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
//------------------------------------------------------------------------------
// LAGraph_CFL_optimized_matrix_opt.h: Header with operations for
// Optimized Context-Free Language Reachability Matrix-Based Algorithm
//------------------------------------------------------------------------------
//
// LAGraph, (c) 2019-2026 by The LAGraph Contributors, All Rights Reserved.
// SPDX-License-Identifier: BSD-2-Clause

// Contributed by Vlasenco Daniel, Ilhom Kombaev, Semyon Grigoriev, St. Petersburg State
// University.

//------------------------------------------------------------------------------

// Code is an implementation of optimized matrix operations for CFL_reachability
// algorithms, described in the following paper:
// * Ilia Muravev, "Optimization of the Context-Free Language Reachability Matrix-Based
// Algorithm" and based on the python implementation from:
// https://github.com/FormalLanguageConstrainedPathQuerying/CFPQ_PyAlgo/tree/murav/optimize-matrix

#include <GraphBLAS.h>

// Several square matrices can be concatenated into a horizontal or vertical vector of
// matrices for fast multiplication
//
// [CELL] - the matrix is square: n x n
// [VEC_HORIZ] - the matrix is a horizontal block vector: n x (n * k),
// where k is the number of concatenated matrices
// [VEC_VERT] - the matrix is a vertical block vector: (n * k) x n,
// where k is the number of concatenated matrices
enum CFL_Matrix_block { CELL, VEC_HORIZ, VEC_VERT };

// Matrix wrapper for CFL reachability algorithms with optional optimizations
typedef struct CFL_Matrix {
GrB_Matrix base; // Underlying GrB_Matrix
int8_t optimizations; // Optimizations flags
// Fields of base matrix
GrB_Index nvals;
GrB_Index nrows;
GrB_Index ncols;
// Fields of format optimization
GrB_Matrix base_row;
GrB_Matrix base_col;
int32_t format;
bool is_both;
// Fields of lazy addition optimization
struct CFL_Matrix **base_matrices;
size_t base_matrices_count;
bool is_lazy;
// Fields of block optimization
enum CFL_Matrix_block block_type;
} CFL_Matrix;

// Creates a CFL matrix from intialized GrB_Matrix
//
// Creates a CFL_Matrix wrapping an already-initialized GrB_Matrix
// On success, *matrix is set to a newly allocated CFL_Matrix
GrB_Info CFL_matrix_from_base(CFL_Matrix **matrix, GrB_Matrix base);

// Creates a lazy CFL matrix from intialized GrB_Matrix
//
// Creates a CFL_Matrix wrapping an already-initialized GrB_Matrix
// On success, *matrix is set to a newly allocated CFL_Matrix
GrB_Info CFL_matrix_from_base_lazy(CFL_Matrix **matrix, GrB_Matrix base);

// Creates an empty CFL_Matrix of the given dimensions
//
// The underlying GrB_Matrix is allocated internally
// On success, *matrix is set to a newly allocated CFL_Matrix
GrB_Info CFL_matrix_create(CFL_Matrix **matrix, GrB_Index nrows, GrB_Index ncols);

// Creates an empty lazy CFL_Matrix of the given dimensions
//
// The underlying GrB_Matrix is allocated internally
// On success, *matrix is set to a newly allocated CFL_Matrix with new CFL_Matrix
GrB_Info CFL_matrix_create_lazy(CFL_Matrix **matrix, GrB_Index nrows, GrB_Index ncols);

// Free a CFL_Matrix and sets *matrix to NULL
GrB_Info CFL_matrix_free(CFL_Matrix **matrix);

// Recomputes internal fields (nvals, nrows, ncols, format, block_type, etc...)
// from the current state of the underlying base matrix
GrB_Info CFL_matrix_update(CFL_Matrix *matrix);

GrB_Info CFL_mxm(CFL_Matrix *output, CFL_Matrix *first, CFL_Matrix *second, bool accum,
bool swap, int8_t optimizations);
GrB_Info CFL_wise(CFL_Matrix *output, CFL_Matrix *first, CFL_Matrix *second, bool accum,
int8_t optimizations);

// Computes C = B \ A, i.e. C(i, j) = true iff B(i, j) = true and A(i, j) = false.
GrB_Info CFL_rsub(CFL_Matrix *output, CFL_Matrix *mask, int8_t optimizations);
GrB_Info CFL_dup(CFL_Matrix *output, CFL_Matrix *input, int8_t optimizations);

// Converts a matrix (lazy or regular) into its evaluated base form by merging
// all underlying base matrices. If the input matrix is not lazy, returns its copy
//
// Parameters:
// matrix_p - [out] Pointer that will be holds created matrix
// input - [in] Pointer to the source matrix (may be lazy).
// optimizations - [in] Bitmask specifying enabled optimizations.
GrB_Info CFL_matrix_to_base(
// output
CFL_Matrix **matrix_p,
// input
CFL_Matrix *matrix, int8_t optimizations);

GrB_Info CFL_clear(CFL_Matrix *A, int8_t optimizations);
Loading
Loading