flintlib/flint

Tuning suite

Opened this issue · 1 comments

We would really need a tuning suite we can use for different processors.

I mainly think of multiplication stuff, but other parameters are also important, of course.

My thinking is that such a program runs different functions, and checks where the thresholds are. When I say checks I am mainly thinking of applying some approximated time function on the form
$$t(n) = p_k(n) + \ell(n) + w(n)$$
where $p_k$ is a univariate polynomial of degree $k$, $\ell$ is a polynomial-ish function with coefficients on the form $\lambda_1 \log n + \lambda_2 \log \log n + \cdots$ and $w$ may be some special function. The allowed form of this time function should be different for different algorithms (for instance, schoolbook multiplication should not have some logarithmic factor).

One should be able to just run the program, and it will spit out all the thresholds.

Note: in src/gr_poly/tune/cutoffs.c is something somewhat generic for tuning univariate cutoffs for various polynomial functions.