Open EricBoix opened 9 months ago
Nothing wrong, it seems to be related to the memory consumption issue for a CGAL tool we are using (discussed by email with Eric L and Martial) that may cause docker issues
If you run the commands outside docker (on your OS), you should be able to see the memory issue (unrelated to DGtal nor the pc2vol thing)
There are 2 different and unrelated memory issues:
pc2vol
tool has a memory issue as stated by @dcoeurjoSee also this comment.
thx @elombardi2
FYI: unless I've missed something, I don't have access to the GRIM repo
EBO, if you increase the memory allocated to Docker under Mac to 64 GB (ok I admit you need a racing machine !), normally it should work. ;-)
By the way, can you please add DCO to the GRIM project ? Thanks Update : done by ELO
@mtola Well, it happens that my usage of pc2vol has to be container based (my operational context relies on the Argo Workflows platform for scaling-up/reproducibility concerns). And my dev context happens to be an OSX desktop with a (reasonably) limited 32G configuration. So raising to 64 GB is alas not an option for me since dev precedes ops... ;-) Besides I'm not sure to understand why being on some particular OS could/should be relevant when trying to (partially) abstract one-self from the underlying OS by working with containers.
I understand that, at some usage level, the RAM has to be a limit. But I have a hard time understanding why this limitation has to be platform specific. And if that were to be the case, can't pc2vol trap memory allocation limits (be it in some underlying CGAL library) and emit an informative error message ?
In order to assert for (yet) a possible side-effect (on RAM usage) of working with an underlying VM on OSX, I tried to run pc2vol on (almost) arbitrarily tiny data sets: refer here for a tiny context for working on tiny data sets. Alas it seems that even with 5k pc inputs, pc2vol produces no output. So, however context specific the problem might be, it seems to arise without any memory footprint threshold. Which can be quite surprising...
When one tries to run pc2vol on the tunetgen_n_30.xyz
input file with
docker run --rm -v `pwd`/data:/data -it dgtal/pc2vol /home/pc2vol/pc2vol/build/pc2vol -i /data/tunetgen_n_30.xyz -o /data/tunetgen_n_30.vol
then pc2vol
reports
Point cloud bbox: (100, 100, -17.3821) (1.84294e+06, 5.17647e+06, 17.1562)
that seems incorrect since
grep "^1842" -v data/tunetgen_n_30.xyz
has an empty output (meaning all X
coordinates start with 1842
that is bigger than the lower value of the bounding box that is reported as being 100
).
--gridstep
flag does not seem to help on the geographic coordinatesThe input files use geographic coordinates which the --gridstep
flag does not seem to help. For example
docker run --rm -v `pwd`/data:/data -it dgtal/pc2vol /home/pc2vol/pc2vol/build/pc2vol -i /data/tunetgen_n_30.xyz -o /data/tunetgen_n_30.vol --gridstep 10000
yields
Point cloud bbox: (100, 100, -17.3821) (1.84294e+06, 5.17647e+06, 17.1562)
Digital domain = 489740 [HyperRectDomain] = [(-1, -1, -2)]x[(186, 519, 2)]
New Block [WindingNumber BVH]
and no output file.
Build pc2vol within a docker container
Test it on the bunny
that outputs
and dumps a
bunny.vol
file outpueAll is nice.
Now let's try providing a heavier output by applying pc2vol on this cave point cloud
and this point set thus looks having the
X, Y, Z, Nx, Ny, Nz
format that pc2vol expects.But when running
the output goes
and the container exits whithout producing a file output. What am i doing wrong ?