Hi all,
I'm currently working on estimating memory access volume (number of iterations per variable) in loop programs as part of a project.
To compute the number of memory accesses per statement, I am trying to use Barvinok and ISL to extract the iteration count and symbolic cardinality of access relations.
However, it seems that the Barvinok version I installed (version details are specified below) is using the bundled ISL, which might not support full cardinality computation, or at least I’m not able to access symbolic cardinality functions from it.
Could you please suggest:
- The correct version of Barvinok + ISL known to support symbolic volume (cardinality) estimation reliably?
- Any build flags or configuration steps I should ensure while compiling from source?
- If there’s a known minimal test case or script to verify the volume estimation functionality?
Any help or references would be greatly appreciated!
Here is my current setup:
ISCC Version Info:
isl-0.27-GMP
barvinok-0.41.3
clang version 9.0.1
pet-0.11.8
Thanks in advance!
Dear Mr. Verdoolaege,
Thank you for your response.
I am planning to use Barvinok for counting loop iterations from affine/nested loop programs by representing their iteration domains as parametric polytopes.
I went through the README and setup instructions, but could not find the specific versions of the required dependencies (ISL, NTL, LLVM/Clang, GMP, etc.) that are known to work reliably with the current version of Barvinok.
Could you kindly let me know which versions of these dependencies are recommended for a successful build and usage?
Thank you for your time and support.
Best regards,
Avinash M N
I’m working on developing a compiler for an AI Accelerator, and I have encountered an issue related to cardinality calculation using Barvinok.
As part of the process, I need to convert iteration domains into tiled domains. The iteration domains I am dealing with are represented by ISL constraints, such as:
"[M, T] -> { [i] : 0 <= (i*T) < M }"However, when there is a multiplication between parameters, such as in the above expression, Barvinok fails to compute the cardinality, with the error message: "expecting constant value, got ident 'T'". This issue arises because the current formulation of the set involves a multiplication between parameters, and I cannot assign a value to as it must remain symbolic in this context. This seems to be unsupported by Barvinok for cardinality calculations.
Is there a supported method or workaround in Barvinok to handle or approximate such sets, where the constraints involve multiplication between parameters?
I appreciate any advice or suggestions you may have on this type of issue!
Best regards,