-
Notifications
You must be signed in to change notification settings - Fork 302
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
Clean up public api #2398
Clean up public api #2398
Conversation
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.
OK, I am approving this, but is there really a fundamental reason we should not include cuco in the public space? (why yes for thrust but no for cuco?)
If later we move primitives and graph.hpp and graph_view.hpp (and few more files to create a graph/graph_view object) to a separate higher-level library, cuco should come back to the public space again.
Is this more of a temporary hack or we should never reference cuco in the public space in the future?
Fair question. Anything we reference in the public API needs to be installed on the machine in order for someone to use our software as a C/C++ library. If a developer writes code and includes Obviously if they want to compile our code they will need all of our build-time dependencies. But if they install our code (say from conda) and then try and build, it would be nice to minimize the external things that we require them to have. I'm inclined to say I believe the primary motivation (from the scikit-build perspective) of removing dependency on |
@gpucibot merge |
To clarify the current issue a little bit, the problem is that in the current setup cuco is in a hybrid state:
The upshot is that any library building against libcugraph is going to think that it needs cuco, even though it actually doesn't. That applies to the Python build with scikit-build, but also any other CMake-based build that has libcugraph as a dependency. That leaves two solutions:
We can probably aim for 1 in the long term, but 2 is the expedient solution to enable scikit-build for cugraph Python. |
After #2398 cuco is not actually part of libcugraph's public API and should not be required by consumers. Since it is already not being installed, this PR removes it from the public link interface of libcugraph. This PR also uses rapids-cmake to fetch cuco, ensuring that libcugraph remains in sync with the rest of RAPIDS. There are a handful of tests that still rely on `libcugraph::detail` APIs that use cuco. To minimize the leakage of these dependencies, they are explicitly linked to cuco (rather than the current approach where they receive the cuco headers transitively from the libcugraph target). Authors: - Vyas Ramasubramani (https://github.com/vyasr) Approvers: - Rick Ratzel (https://github.com/rlratzel) - Chuck Hastings (https://github.com/ChuckHastings) URL: #2432
We are exposing some internal implementation details in our public header files. This PR addresses exposing
cuco
in the public header files. It is the start of the effort to clean up the public API for libcugraph.Ultimately our plan is to migrate the graph primitives into a separate library. This PR does move a bunch of the primitive headers out of the libcugraph public API.