Skip to content

[FEA] Reorganize Cython to separate C++ bindings and make Cython classes public #1280

Closed
@vyasr

Description

Is your feature request related to a problem? Please describe.
Currently rmm intermixes C++ API bindings and Cython declarations in the same pxd files. All of these pxd files are contained in the _lib module, whose name suggests that it is internal. However, this module is used by essentially all RAPIDS libraries because their Cython code compiling against Cython classes like rmm._lib.device_buffer.DeviceBuffer. Therefore, despite being ostensibly private, it is in fact treated as part of the public API by the rest of RAPIDS.

Describe the solution you'd like
The Cython C++ API bindings should be moved into a separate subpackage that is not conflated with the pure Cython code. The Cython code should be moved into a new subpackage whose name clearly indicates that it is intended to be public.

Describe alternatives you've considered
None

Additional context
Since any change here would be a breaking change to the rest of RAPIDS, it would be best to alias all existing types back into rmm._lib when the new module structure is created along with deprecation warnings. See #1221 for a template of how to do this.

Metadata

Assignees

Labels

PythonRelated to RMM Python APIfeature requestNew feature or request

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions