joe-jordan/pyvoro

tesselation fails with "Command terminated" when trying to compute tesselation of large list of points

toneyy opened this issue · 4 comments

pyvoro.compute_2d_voronoi(points, [xlim,ylim], 1.0, radii=radii)

points is a list of ~90k points

Program dies with "Command terminated". Is this an issue of the underlying voro++ library or an issue of pyvoro?

Can you please post the full command line output? It may also be helpful to run echo $? immediately after the failure (before any other commands).

This error string does not come from pyvoro or voro++. I've never tried a dataset this big before, so it may be a memory management issue or something. Knowing which signal the process is going down with (which echo $? will tell us) would be very helpful.

Can you please clarify what [xlim, ylim] are, also? Each should be a list of an upper and lower bound.

thanks for your answer and sorry for the late reply, i've been away over the holidays

thats how i set the boundaries:
dimX = 550
dimY = 3050
_xlim = [-dimX/2.0,dimX/2.0]
_ylim = [-dimY/2.0,dimY/2.0]

somehow the command line output has changed from "Command terminated" to "Killed" over the holidays (i did not even restart the machine)

running echo $? immediately after the program exits yields: "137"

which would be 128+n

i think you are right in that its an out of memory issue, and its the OS that kills my process.
i will try the script on a machine with more memory :-)

137 is the OOM (Out Of Memory) killer. 90k points is only about 3MB, plus some slack for Python.

What are the dimensions (units) of the points? How far apart from each other are they, roughly? The 1.0 you have hard coded needs to be roughly the same size as the distance between your points (to order of magnitude). Otherwise I suspect Voro++ will allocate a very large number of bins, or something like that.