etrombly wrote: ↑
Sat Jul 18, 2020 11:10 am
There are a few things that can still be done to speed it up. There are some steps that can be done in parallel, but I just did a quick check with mnesarco's threading module, and due to pythons GIL it doesn't actually speed anything up. Those sections would need to be ported to C++ (which would be a big task, it's a large chunk of the current python code).
Originally the meshing was done using brepmesh, it's currently done using part.tessellate. I can do some tests because it seems like tessellate is a little slower. I had added a much faster method, but it didn't create an accurate enough result. Maybe we can still use that for a preview pass, before generating the final operation.
That preview idea is very good. I often do half a dozen recomputations of a 3Dsurface path before getting all the params the way I want. I also have to turn off auto-recompution when editing params in the tree view. A faster, less accurate preview mode would be a great help.
Opencamlib is the slowest part. It's supposed to support multi threading, but I've noticed 3D surface seems to just be pegging 1 core most of the time. Maybe there are some improvements that can be made upstream. It might not be something that could be made parallel easily though.
edit: just looked around with opencamlib, the docker build I'm using doesn't turn on openmp (multithreading) support. I have a feeling this is true for most people. I turned it on and recompiled, but need to test more if it makes a difference.
What needs to be done to enable openmp on OCL build? I want to make sure I'm doing that.