|
|
|
|
|
by rckoepke
1228 days ago
|
|
I've been trying to use convex hulls to explore ML embedding spaces. However, the dimensionality (768+ dimensions) seems to crash established options like QHull[0], even with 64GB RAM (and 16 CPU cores, albeit libqhull is not multi-threaded). Are there more appropriate algorithms for finding convex hulls where dimensions are ~768? Or any parallelized / GPU-optimized options that I should look into? 0: http://www.qhull.org |
|
You are going to have to roll your own.
One trick you can use is that most convex hull algorithms chase O(nlg(n)). That lg(n) implies a branching step which lowers efficiency on GPUs. Your coefficients in high dimensions likely mean an O(n^2) branchless algorithm could run faster on a GPU.
Cull points aggressively too, for what little that is worth in high dimensions.
I found https://www.sciencedirect.com/science/article/abs/pii/S01678... which looks like it could be a starting point.
The real problem is that in dimensions that high, the point set probably already is the hull and all this is a zero signal gain operation.