-
Notifications
You must be signed in to change notification settings - Fork 53
Allow CUDA CCA algorithm to output cluster info #930
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
base: main
Are you sure you want to change the base?
Conversation
Tagging @paradajzblond as an interested party. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The internal implementation seems to make sense. But as I wrote earlier, I have some pretty concrete ideas about the API.
device/cuda/include/traccc/cuda/clusterization/clusterization_algorithm.hpp
Show resolved
Hide resolved
device/cuda/include/traccc/cuda/clusterization/clusterization_algorithm.hpp
Outdated
Show resolved
Hide resolved
device/cuda/include/traccc/cuda/clusterization/clusterization_algorithm.hpp
Outdated
Show resolved
Hide resolved
2eaa3d6
to
372a084
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's talk in person. Let's discuss how the SoA container should work. 🤔
1ad193a
to
3b6c34d
Compare
All good to go! |
94b755b
to
f1eaaee
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To put it here as well, I personally would be a lot happier if the new function arguments would also be given to the functions via vecmem views. And in fact I plan to update the code myself to that formalism when upgrading the Alpaka and SYCL algorithms.
But other than that, only some small requests for updating the documentation. And don't forget to add the missing .cu
file!
device/common/include/traccc/clusterization/device/aggregate_cluster.hpp
Outdated
Show resolved
Hide resolved
device/common/include/traccc/clusterization/device/impl/aggregate_cluster.ipp
Outdated
Show resolved
Hide resolved
Please feel free to try, but I will just warn you again that you are wasting your time. If you try this, you will notice that using vecmem views here is a lot of effort, adds a lot of complication, and yields no benefits. |
50cef21
to
213979c
Compare
This commit allows the CUDA CCA algorithm (and, in the future, the SYCL and Alpaka equivalents) to output cluster information in the form of a disjoint set array. The design is such that the existing API is unchanged, but that extra function calls become available.
213979c
to
c1b95a5
Compare
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First time that I would ever see this word. 🤔
if (cluster_size.has_value()) { | ||
(*cluster_size).get() = tmp_cluster_size; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😕 All I wrote was to try to get rid of this if-block. As long as the block is still here, the new function argument is completely useless. Please either
- try the formalism that I suggested, and see what it does to the compiled code;
- or go back to using a pointer.
This current version is the worst of all worlds. 😦
template <device::concepts::thread_id1 thread_id_t> | ||
TRACCC_HOST_DEVICE void reify_cluster_data( | ||
const thread_id_t& thread_id, unsigned int* disjoint_set_ptr, | ||
unsigned int num_cells, | ||
traccc::edm::silicon_cluster_collection::view cluster_view) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please provide some function documentation.
... |
This commit allows the CUDA CCA algorithm (and, in the future, the SYCL and Alpaka equivalents) to output cluster information in the form of a disjoint set array. The design is such that the existing API is unchanged, but that extra function calls become available.