joe-jordan / pyvoro

2D and 3D Voronoi tessellations: a python entry point for the voro++ library
Other
106 stars 26 forks source link

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

Open toneyy opened 8 years ago

toneyy commented 8 years ago

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?

joe-jordan commented 8 years ago

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.

joe-jordan commented 8 years ago

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

toneyy commented 8 years ago

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 :-)

joe-jordan commented 8 years ago

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.