-
Notifications
You must be signed in to change notification settings - Fork 756
New Versioning Scheme #915
Comments
Ouch. This is not doable because CMake's |
The |
@brycelelbach what is the planned format defined in |
And, if Thrust provided a ThrustConfig.cmake, find scripts would not be needed. |
@brycelelbach regarading CUDA 10 just being released: let's just take your proposed version scheme and add a |
I also agree that it would be better to provide a |
…mes the Thrust major and minor version numbers are a single digit. Bug 2059059 Bug 200427530 Github #915 git-commit dec1cc9638a7c37ebf1b813f0a7093264086bd9e git-author Bryce Adelstein Lelbach aka wash <[email protected]> Jobs: 200427530-2006 2059059-2006 [git-p4: depot-paths = "//sw/gpgpu/thrust/": change = 24476190]
I would like to get community feedback on the following proposed new versioning scheme for Thrust.
From #888:
It sure is confusing to figure out what version of Thrust shipped with a particular release of CUDA. I plan to fix that in the next release of Thrust in CUDA by switching to a new versioning scheme.
In the new scheme, the Thrust major and minor version will be the same as the CUDA major and minor version that is released with [0].
So for example, Thrust v15.0.0 would be released with CUDA 15.0. After the release, the Thrust version number would be bumped to 15.0.1 on the public development branch (which will live on both GitHub and internally at NVIDIA).
Suppose we did a GitHub release in between CUDA releases. It would be called 15.0.1 and the development branch would be bumped to 15.0.2 (we can go up to 15.0.99 if needed).
Let's also suppose that there was a second public release of CUDA 15.0 that contained updates to Thrust. This would be an extraordinary circumstance and I don't think it would ever happen in the future. If it did, we would bump the Thrust patch number - e.g. the second release of CUDA 15.0 would contain Thrust v15.0.0-1. Otherwise, the Thrust patch number will be 0 - as such, going forward we will omit stating the patch number if it is 0 (Thrust v15.0.0 == Thrust v15.0.0-0).
There would also be an internal private development branch - Thrust v15.1.0 - for the next CUDA release, 15.1. 15.1.0 (private dev) and 15.0.2 (public dev) would be almost identical. Everything from 15.0.2 will be in 15.1.0. The only things in 15.1.0 that are NOT in 15.0.2 would be code that depends on the unreleased CUDA 15.1, and thus can't be used by non-NVIDIA people yet.
This new scheme amounts to a version jump from the current 1.y.z series. The existing Thrust version format (XXXXYYYZZ, X = major, Y = minor Z = subminor) would remain the same, the existing Thrust version macros would remain the same, and code that uses those macros would continue to work.
You may be wondering about compatibility with older CUDA versions. See #916 for my proposed compatibility strategy.
[0] CUDA releases do technically have a third release number - the build number. For example, the public release of CUDA 9.2 is CUDA 9.2.88. We will not embed the build number into the Thrust versioning scheme because (a) most CUDA releases and users will only use a single build number and (b) the build number is generated during packaging so there is no easy way for us to include it in the Thrust version header.
TL;DR
Going forward, Thrust vX.Y.Z is the version released with CUDA X.Y.
Thoughts and feedback are most welcome.
The text was updated successfully, but these errors were encountered: