Advice on transitioning large source code base from v2.8 to v3.x #6540
Replies: 2 comments 8 replies
-
|
Hey @Artem-B. Thanks for starting this discussion. I totally empathize with needing to support unfortunate situations like that 😅. Just one of those unglamorous things that come up in the realities of software engineering. To help us even begin to start wrapping our head around what this would take, is there any way you could give us an idea of what % of the surface area of CCCL we're talking about? Maybe to start could you get us a list of all the unique thrust/cub/cuda symbols used across the various projects you're supporting? |
Beta Was this translation helpful? Give feedback.
-
|
There is no way to use different versions of CCCL at the same time. We had a never ending flood of bugs arising from accidentally mixing different versions. I would assume that reverting rapidsai/rmm#2113 should be reasonably possible (at least internally) as it only drops conditional compilation. @bdice what is your stance on allowing older CCCL or was there some other issue there? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I need to migrate a large code base from CCCL 2.8 to 3.1. The problem is that it can't be done at once. The sources are maintained by different teams, some of the sources are external projects, and even if we do get them all to have patches ready, by the time all of them are done, the patches will likely be out of date because of the ongoing work.
The practical reality is that the source code must remain buildable with both v2.8 and v3.1 until transition is complete.
https://nvidia.github.io/cccl/cccl/3.0_migration_guide.html lists a lot of things that have changed and are likely to break things. On my toy build attempts a lot of things, as expected, do break. Now I need to figure out how to transition multiple users that currently use v2.8 to v3.1, one at a time. The best (but terrible) idea I've came up so far is the good old preprocessing based on CUB/THRUST/CCCL version macros. While it's OK for small projects, that's going to be borderline unmanageable in my case.
I wonder if it would be feasible to provide some sort of compatibility shim that would allow current v2.8 users to continue working in the builds that use v3.1, and then let individual teams migrate to the native v3.1 APIs on their own schedule. Sprinkling uniform
#include <cccl_v28_compat.h>and decoupling the users' own code upgrade from the build-wide CCCL upgrade would make things work much better.Perhaps there are other approaches I should consider.
Thoughts? Ideas?
@jrhemstad @miscco
Beta Was this translation helpful? Give feedback.
All reactions