-
Notifications
You must be signed in to change notification settings - Fork 99
Add multi-cuda wheel build #289
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
base: main
Are you sure you want to change the base?
Conversation
|
/ok to test 1ab0a2e |
1ab0a2e to
4b5fb32
Compare
|
/ok to test 4b5fb32 |
|
/ok to test a020600 |
|
/ok to test 18ecf11 |
|
/ok to test b62956b |
|
/ok to test edd31c7 |
|
/ok to test d178a08 |
|
/ok to test fd2de8c |
This reverts commit edd31c7.
|
/ok to test 1e2ef0f |
|
/ok to test d54f264 |
|
/ok to test 13cb606 |
|
/ok to test 9af979d |
This reverts commit 13cb606.
|
/ok to test ec3615b |
|
|
||
| [project.optional-dependencies] | ||
| # CUDA 12.x dependencies | ||
| cu12 = ["cuda-bindings>=12.0.0,<13.0.0", "nvidia-cuda-cupti-cu12"] |
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.
Remove the cuda-bindings dependency as it's just used as a proxy for the CUDA major version right now.
alliepiper
left a comment
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.
CMake / infra side look good to me
| CPMAddPackage("gh:pybind/pybind11@3.0.0") | ||
|
|
||
| # Determine CUDA major version for directory structure | ||
| string(REGEX MATCH "^([0-9]+)" CUDA_VERSION_MAJOR "${CUDAToolkit_VERSION}") |
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.
nit: CUDAToolkit_VERSION_MAJOR should already be defined as part of CUDAToolkit.
| if [[ "$(uname -m)" == "aarch64" ]]; then | ||
| readonly cuda12_image=rapidsai/ci-wheel:${devcontainer_version}-cuda${cuda12_version}-${devcontainer_distro}-py${py_version}-arm64 | ||
| readonly cuda13_image=rapidsai/ci-wheel:${devcontainer_version}-cuda${cuda13_version}-${devcontainer_distro}-py${py_version}-arm64 | ||
| else | ||
| readonly cuda12_image=rapidsai/ci-wheel:${devcontainer_version}-cuda${cuda12_version}-${devcontainer_distro}-py${py_version} | ||
| readonly cuda13_image=rapidsai/ci-wheel:${devcontainer_version}-cuda${cuda13_version}-${devcontainer_distro}-py${py_version} | ||
| fi |
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.
Nit: Perhaps introduce readonly host_arch_suffix to set to -arm64 or leave empty` and then image names could be set unconditionally, and arch names would only need to be changed in one place:
readonly cuda12_image=rapidsai/ci-wheel:${devcontainer_version}-cuda${cuda12_version}-${devcontainer_distro}-py${py_version}${arch_suffix}
readonly cuda13_image=rapidsai/ci-wheel:${devcontainer_version}-cuda${cuda13_version}-${devcontainer_distro}-py${py_version}${arch_suffix}| # Test dependencies for CUDA 13 | ||
| test-cu13 = ["pynvbench[cu13]", "pytest", "cupy-cuda13x", "numba"] | ||
|
|
||
| # Generic test dependencies (defaults to CUDA 12) |
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.
Shouldn't we default to the latest major version of CTK? Is there a reason not to default to using cu13?
This PR introduces "multi-CUDA" wheels builds, exactly similar to the ones we build for CCCL, as described here.
Instead of shipping multiple packages (
pynvbench-cu12,pynvbench-cu13); we ship a single one (pynvbench) that contains both CUDA 12 and 13 binaries (bindings). The resulting wheel size is just ~2.2MB, so this is not a problem. At runtime, depending on the available CUDA version, the appropriate binary is loaded.At install time, we still need the user to specify which CUDA major version to install for - because the version of required dependencies (
nvidia-cuda-cupti-cu12) depend on the CUDA major version. This specification of the CUDA version is done using "extras":