cuda-python icon indicating copy to clipboard operation
cuda-python copied to clipboard

RFC: Turn `cuda-python` into a metapackage

Open leofang opened this issue 1 year ago • 0 comments

As we are making cuda a namespace package and creating subpackages such as cuda.py (#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.py 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.py beta release:
            cuda-python (X.Y.Z)          cuda-python (X-1.Y'.Z')
            /         \                  /         \
           /           \                /           \
          v             v              v             v
       cuda.py --> cuda-bindings    cuda.py --> 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.py 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!

leofang avatar Sep 12 '24 01:09 leofang