Unifying the CUDA C++ Core Libraries: Towards a More Delightful CUDA C++ #520
Replies: 4 comments 8 replies
-
(Repeating and slightly expanding my comment from LinkedIn since I've now noticed this page has comments open...) Unifying CUB and thrust might make sense, depending on how you approach it, and assuming you make the unified library more decomposable, so you don't drag everything in the moment you include anything, and are not required to follow a specific abstraction regime to use any functionality (which is an issue I've had with thrust in the past). Still, that's a surmountable challenge and possibly a good thing. However, unifying these with libcudacxx is probably a bad idea, because libcudacxx is, IMHO, in itself a bad idea to begin with. You should not be trying to replace the standard language library, in the first place. For the host side - that's not NVIDIA's business; and for the device side - much of the standard library shouldn't exist at all, and much of the rest should not have the same design. A minor point in this regard is amounts of code such a unification might drag in. thrust is already quite verbose; I wonder how it does when used in NVRTC. Tack on libcudacxx and I'm assuming there is even more of a burden there. |
Beta Was this translation helpful? Give feedback.
-
NVIDIA makes CPUs, and has for years now. This is only our latest. Furthermore, NVIDIA needs to provide at least a device-side standard library. Doing so without providing a compatible host-side standard library leads to a lot of problems, even on systems without an NVIDIA CPU. The UX for the developer is much better with a unified standard library. I think system-wide |
Beta Was this translation helpful? Give feedback.
-
Will there be a unified documentation page? |
Beta Was this translation helpful? Give feedback.
-
What's the difference between |
Beta Was this translation helpful? Give feedback.
-
We're excited to announce that the CUDA C++ Core Libraries (CCCL) - Thrust, CUB, and libcudacxx - are now unified under the nvidia/cccl repository. This consolidation aims to offer a more cohesive experience, simplify development, and set the stage for future innovations. Dive into the details below to understand what this means for you and the broader community.
TL;DR:
Rationale
Bringing CCCL under one roof is the first critical step in building a more coherent and modern CUDA C++ platform. This consolidation will not only simplify development, but also ensure a smoother, more convenient user experience.
The big picture? A vision of a singular, modern CUDA C++ library that not only integrates but also enhances the features of its predecessors. Much like how the Standard C++ Library is the backbone to Standard C++, the ambition is for CCCL to be the go-to suite of general purpose, speed-of-light tools that free CUDA C++ developers to solve the problems that truly matter.
Changes
Active development has shifted and is now fully underway at the new repository. Soon, the current repositories will be archived, and all issues will be moved to the new repository. GitHub users will need to fetch from the new repository and make necessary updates to their build and CMake setups. An example project is available, illustrating how to fetch and utilize the new repository via CMake.
For those using CCCL from the CUDA Toolkit, no immediate changes are required. However, it might be beneficial to consider transitioning to the latest version of CCCL on GitHub. CCCL is now officially supported on both the latest and prior major series of the CUDA Toolkit. Therefore, moving to the latest version from GitHub grants access to the latest developments without any worries of incompatibility with older CTK versions. See the Platform Support documentation for more information.
Exciting New Features
The merger comes with improvements to infrastructure and documentation to streamline the experience for users, maintainers, and contributors.
Let's Make CUDA C++ Better Together
CUDA C++ is evolving, and CCCL is at the forefront of making it more efficient and user-friendly.
Help from the community will be essential to make this vision a reality, and it is easier than ever to get involved.
Want to join the effort? Dive into open issues, try the new Dev Containers, check out the new project board, or open an issue. If CCCL is used in your project, consider adding to the list of users.
This merger is a testament to the power of collaboration that we want to foster. Thanks to the RAPIDS DevOps team (@ajschmidt8, @jjacobelli) for making our CI system happen, and @trxcllnt for creating the new Dev Container infrastructure. Kudos to @jarmak-nv for setting up the project board and processes, and to the CCCL team (@allisonvacanti, @ericniebler, @griwes, @miscco, @elstehle, @senior-zero, @wmaxey) for all their tireless work.
Beta Was this translation helpful? Give feedback.
All reactions