Skip to content

RFC: Turn cuda-python into a metapackage #105

@leofang

Description

@leofang

As we are making cuda a namespace package and creating subpackages such as cuda.core (#70) and cuda.bindings (#75), each of which may have its own version, it makes sense for us to rethink the package structure.

This RFC proposes a way to restructure the components so as to allow users to install only the components that are needed. As a result, we can make the existing cuda-python become a meta package depending on the individual components. Visualizing with the fact that we actively maintain two major-version branches (currently CUDA 11 & 12, so X=12 below), we have the following diagrams:

  • Before cuda.core beta release:
    cuda-python (X.Y.Z)          cuda-python (X-1.Y'.Z')
            \                          \
             \                          \
              v                          v
        cuda-bindings (X.Y.Z)       cuda-bindings (X-1.Y'.Z')
  • After cuda.core beta release:
            cuda-python (X.Y.Z)          cuda-python (X-1.Y'.Z')
            /         \                  /         \
           /           \                /           \
          v             v              v             v
    cuda.core --> cuda-bindings    cuda.core --> cuda-bindings
       (A.B.C)        (X.Y.Z)       (A.B.C)        (X-1.Y'.Z')

This RFC is not impacting existing users in anyway (apart from what's already outlined in #75). This is purely an implementation detail to users. However, this allows advanced users and libraries to have the freedom to choose if they need cuda-python, cuda.core or just cuda.bindings (the cuda-python today). We also allow a more complex dependency diagram to grow organically under cuda-python.

Please let us know if you have any thoughts or concerns. Thanks!

Metadata

Metadata

Assignees

Labels

RFCPlans and announcements

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions