Parallelizing Polyhedral volume computation
For an application, I need to compute volumes of convex polytopes of dimension of about 300. The polytopes of interest have a restricted form:
P:=(x1,x2,…,xn) with 0≤xi≤xi+1≤L, l≤xi−xi+1≤u where L,u,l are known positive constants.
On my laptop, the polytope volume computation routine takes about 3 hours to compute for n=9, and freezes for larger n, making it useless for most interesting cases of my application.
Is there an easy way to parallelize the volume routine?
Perhaps by a straightforward use of the [multiprocessing] module, when running on a cluster ?
A more advanced use case, which also arises in my application, lies in computing integrals over the polytope: ∫Pf(x)dx, where f is a symmetric function of its arguments. I would greatly be interested in techniques that extend to this case as well.
In version 7.6.beta6, there is a computational engine, LattE integrale, that is interfaced with Sage. See #18232 and related tickets. It allows to handle your second use case out-of-the-box! (technically, once installed the optional
latte_int
package). For the volume computation, it adds an alternative to the polytope triangulation method, namely a cone-decomposition-based algorithm, see LattE documentation for further details. for curiosity, can you put the data somewhere? (SageMathCloud?)Does latte integrale scale to 300 dimensions?
I was asking for the data because it would be easy for me to give it a try :) but I cannot help you much further than that.