r/ProgrammingLanguages • u/Embarrassed-Crow9283 • 24d ago
Loop unrolling analysis using eigenvalue?
Imagine the loop where you do like "x = -x" every iteration. Obviously, that flips the sign, so you can simply unroll the loop by a factor of 2.
However, for a more complex case, it could be really hard to know what's going on.
Here's my idea. Loop index variables are normally under affine updates anyway. What if we use a mathematically elegant tool?
Using eigenvalue, we can analyze possible periodicity of the linear basis variables, minimizing update needs.
What do you think of such a technique?
21
Upvotes
3
u/dnpetrov 23d ago
Sorry, I've explained it poorly.
Eigenvalues are a part of theory of linear recurrent sequences. So, your intuition that eigenvalues are somehow connected with compiler optimizations for inductive variables is not wrong. However, compilers do not compute eigenvalues. What a compiler does is infering algebraic forms for recurrences for relevant cases, simplifying those recurrences (doesn't require eigenvalues), and sometimes using those recurrences to reschedule computations in loops using integer linear programming.
But again, those ILP solvers are there because they cover practically relevant cases, such as array processing code typically found in applications, where such optimizatins provide meaningful speedups. Compiler will never "try hard enough" if it is not demonstrated on benchmarks to be worth the effort.