Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Affine Equalities Mostly Contain Only Small Portions of Actual Information #1459

Open
DrMichaelPetter opened this issue May 14, 2024 · 0 comments · May be fixed by #1625
Open

Affine Equalities Mostly Contain Only Small Portions of Actual Information #1459

DrMichaelPetter opened this issue May 14, 2024 · 0 comments · May be fixed by #1625
Assignees
Labels
performance Analysis time, memory usage relational Relational analyses (Apron, affeq, lin2var)

Comments

@DrMichaelPetter
Copy link
Collaborator

Setting up a post-analysis count of the share of elements in a matrix that are equal to 0, we come to the following histogram:

sparseity

  • the x-axis is the percentage of 0-elements in relation to all matrix elements of an analysis
  • the y-axis is the number of SV-Comp input files of which the average share of 0 entries

Since we explicitly represent those 0 entries in our current affine-equality array, representation a sparse representation would have some potential for runtime and memory consumption savings.

In former legacy implementations for older analyzers, sparse affine equality implementations where quite successful.

Implementation

Although there is an interface of abstract vectors and matrices are already present in the code, this was not designed with the idea of sparsely represented data in mind. All in all, this is an initial idea of the complications:

  • Especially fold/map style interfaces need to be carefully either implemented with a artificially dense behaviour, or its call-sites need to be checked for compatibility with the sparsity of the representation.
  • Liberal conversion to lists/arrays is now costly
  • Representation must decide on a row-based or column-based representation; non representation-conforming accesses may be costly and are maybe candidates for caching?
@DrMichaelPetter DrMichaelPetter added performance Analysis time, memory usage relational Relational analyses (Apron, affeq, lin2var) labels May 14, 2024
@DrMichaelPetter DrMichaelPetter self-assigned this May 14, 2024
@DrMichaelPetter DrMichaelPetter linked a pull request May 14, 2024 that will close this issue
@sim642 sim642 linked a pull request Nov 12, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance Analysis time, memory usage relational Relational analyses (Apron, affeq, lin2var)
Projects
None yet
1 participant