-
-
Notifications
You must be signed in to change notification settings - Fork 6
How to deal with the version lock with Thrust? #4
Comments
Version locking with thrust should already be handled by the thrust feedstock: https://github.com/conda-forge/thrust-feedstock/blob/master/recipe/meta.yaml#L16-L18 I think the bigger challenge is aligning to a CUDA toolkit version. I'm not sure if Thrust/CUB make any guarantees outside of the version that's shipped in the toolkit, but maybe @brycelelbach or someone from his team can comment here on how we could handle toolkit version compatibility. |
Oh, OK, didn't know there's a thrust-feedstock. Thanks Keith! But this only makes the problem more complicated! Say I install |
Today we only guarantee that Thrust/CUB works with the version of CUDA they ship with. Realistically they probably work with older versions too. My recommendation is to either:
|
cc @rongou |
Right, thanks Bryce. This was what you suggested to me in another thread. For the purposes of both this feedstock and decoupling from what's available in a local CUDA installation, perhaps we need to run_export
@brycelelbach Is it possible to add a pragma guard to CUB to detect if older Thrust is used? Something similar to the version lock implemented in Thrust, except that we don't lock? This way we provide some sort of compatibility guarantee for using newer CUB + older CUDA Toolkit. |
FWIW we can add selectors to control which version of Thrust and CUB is used with which CUDA versions. Also we can turn this into a metapackage for some versions of the CUDA Toolkit that contains it. |
I added a note to the readme to tell people to install the thrust conda package. I guess theoretically you could use cub without thrust, so I'm not sure we should add a runtime requirement to thrust from cub. |
Oh, I was hoping that newer Thrust+CUB could work with the oldest CUDA we support (either 8.0 or 9.2), is it not the case? Also, even if |
The problem is no one would read the readme on a feedstock.......Many conda users don't even know what a feedstock is. They just do
According to @brycelelbach this is not true. CUB depends on Thrust: https://github.com/NVlabs/cub/issues/182#issuecomment-631272979. (I was surprised too!) |
Thanks @rongou for quickly addressing this in #6. I guess we'll need to spread the wisdom that @brycelelbach left in #4 (comment) to downstream. |
You cannot use CUB without Thrust. CUB depends on Thrust. They have a
circular dependency relationship.
Essentially they are a package deal.
…--
Bryce Adelstein Lelbach aka wash
US Programming Language Standards (PL22) Chair
ISO C++ Library Evolution Chair
CppCon and C++Now Program Chair
CUDA Core C++ Libraries (Thrust, CUB, libcu++) Lead @ NVIDIA
--
On Fri, May 29, 2020, 10:28 Rong Ou ***@***.***> wrote:
I added a note to the readme to tell people to install the thrust conda
package.
I guess theoretically you could use cub without thrust, so I'm not sure we
should add a runtime requirement to thrust from cub.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#4 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AADBG4QSG4YYKEP3X6OEYODRT7WE3ANCNFSM4NOCWPQA>
.
|
It's now taken care of in conda-forge packages. Thrust requires the same version of CUB, and CUB requires the same version of thrust. If you install either one through conda, you should get both. |
I think we should use Alternatively we could try merging these into the same feedstock and using split packages to produce both packages as part of the build. |
I installed 1.9.9 and then ran an update. It seems to work: $ conda update --all
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/rou/miniconda3/envs/foo
The following packages will be downloaded:
package | build
---------------------------|-----------------
cub-1.9.10 | 2 170 KB conda-forge
thrust-1.9.10 | 0 452 KB conda-forge
------------------------------------------------------------
Total: 622 KB
The following packages will be UPDATED:
cub 1.9.9-0 --> 1.9.10-2
thrust 1.9.9-0 --> 1.9.10-0
Proceed ([y]/n)?
Downloading and Extracting Packages
thrust-1.9.10 | 452 KB | ######################################################################################################################################################################## | 100%
cub-1.9.10 | 170 KB | ######################################################################################################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done |
Sure it works now. The concerning I'm trying to raise is, what happens when we need to publish new packages for a new version? |
I played around with subpackages, but looks like we can't specify cyclic dependencies between subpackages. Also there is only one With the current approach, publishing a new release of thrust and cub is not atomic, but if they are close enough, perhaps it won't cause too much disruption. Feel free to send a PR if you have a better solution. |
It's possible to have multiple |
Hi, @jakirkham told me this feedstock, thanks for making it live. Since newer CUB will be version-locked with Thrust (see the links below), I am a bit worried about using this feedstock and, in particular, whether things can/cannot be overridden. Can NVIDIA folks provide comments and suggestions?
refs:
The text was updated successfully, but these errors were encountered: