-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Friends-of-Friends Query #161
Comments
If I understand the problem right, it should be equivalent to finding strongly connected components in an undirected (in this case) graph, a well studied problem in the graph community with several parallel methods. I don't see, however, an easy way to not construct the graph with all the neighbors within certain distance at the moment. |
Yes I think that is a good generalization if one considers the results of a preliminary radius query within |
Agreed. In discussing this with Damian, we also thought that after steps 1-3, the task is then finding the connected components of a graph. Each component is then the desired output. To add, a matrix representing the graph would be very sparse, so a representation that can take advantage of that property is needed. Roughly ~100 million points (vertices) in the graph. |
If every query returns |
Just to note: the original multistep method Kokkos implementation is here. It is unknown whether it still works. |
I think our plan of attack for the problem should be the following:
Version 1 seems to be easy to implement, just need to integrate ECL-CC (which already takes in a CSR graph as input). Version 2 should be possible, but needs some further thinking. I think the main question in is whether we can combine init and compute1 stages of the ECL-CC algorithm. There are also further optimizations that could be considered. For example, if the diameter of a bounding box is less than the specified radius, we can guarantee that all its leaves are going to be in the same SCC. We could probably do some pre-processing to partition the domain in boxes prior to the construction. It remains to be seen. |
Another issue to consider is whether we want to use something like density clustering for HACC, as the data is very unevenly distributed. For example, this paper. |
Good idea - this seems like it would be a good solution for at least some cases of unbalanced trees. We will also likely have a use case for something like this in the raytracing problem on facet geometries where the triangle distributions are irregular. |
The driver was implemented and merged in |
Timeline of the algorithm improvement
|
In many cosmology applications a Friends-of-Friends (FOF) query is used to identify clustering in point clouds. In general, the algorithm is as follows:
r
r
r
, find its neighboring points that are within distancer
excluding any neighbors already found previously in the queryr
The end result of each query should be a list of points that are within distance
r
of the query point, or are a neighbor-of-neighbors-of-neighbors-etc... of the query point.Some questions:
The text was updated successfully, but these errors were encountered: