-
Notifications
You must be signed in to change notification settings - Fork 552
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
Improved CPU/GPU interoperability #5001
Improved CPU/GPU interoperability #5001
Conversation
d8dcaaf
to
fa8b051
Compare
**Purpose of this PR** - Provide an implementation of CumlArray that can be backed by either host or device memory - Hook the host-compatible CumlArray into infrastructure for device and memory type selection - Ensure that device-host and host-device transfers are minimized for both GPU and CPU execution of existing CPU/GPU interoperable models **Non-goals of this PR** - This PR is not intended to provide a version of CUML that can be imported or run on a CPU-only system - This PR does not allow CUML to be compiled without nvcc - This PR is not intended to document the CPU/GPU interoperable estimator infrastructure introduced by #4908 and improved in #5001 - This PR is intended *only* to avoid breaking existing functionality. New functionality related to CPU-only execution which is not currently being used in the codebase will be tested in a separate PR **Tests performed on this PR** Besides the obvious (standard test suite), benchmarks have been run against this PR for a variety of conversions to and from the new CumlArray. Additionally, the standard cuML benchmark suite was run against this PR and compared to results from current branch-22.12. Results for both are described below. **Notable features of this PR not immediately related to its purpose** - Implementing the new CumlArray infrastructure required us to break many of the existing circular imports in the codebase - New [utilities](https://github.com/wphicks/cuml/blob/fea-xpu_infra/python/cuml/internals/safe_imports.py) for "safe" imports in the context of GPU-only or CPU-only installs were introduced **Anticipated follow-on PRs** - #5001 - #4970 - PR(s) to make all CPU/GPU-exclusive imports "safe" - PR(s) to add additional testing for CPU-only functionality Authors: - William Hicks (https://github.com/wphicks) - Victor Lafargue (https://github.com/viclafargue) - Corey J. Nolet (https://github.com/cjnolet) Approvers:
rerun tests |
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## branch-23.02 #5001 +/- ##
===============================================
Coverage ? 79.24%
===============================================
Files ? 191
Lines ? 12374
Branches ? 0
===============================================
Hits ? 9806
Misses ? 2568
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
@gpucibot merge |
**Purpose of this PR** - Provide an implementation of CumlArray that can be backed by either host or device memory - Hook the host-compatible CumlArray into infrastructure for device and memory type selection - Ensure that device-host and host-device transfers are minimized for both GPU and CPU execution of existing CPU/GPU interoperable models **Non-goals of this PR** - This PR is not intended to provide a version of CUML that can be imported or run on a CPU-only system - This PR does not allow CUML to be compiled without nvcc - This PR is not intended to document the CPU/GPU interoperable estimator infrastructure introduced by rapidsai#4908 and improved in rapidsai#5001 - This PR is intended *only* to avoid breaking existing functionality. New functionality related to CPU-only execution which is not currently being used in the codebase will be tested in a separate PR **Tests performed on this PR** Besides the obvious (standard test suite), benchmarks have been run against this PR for a variety of conversions to and from the new CumlArray. Additionally, the standard cuML benchmark suite was run against this PR and compared to results from current branch-22.12. Results for both are described below. **Notable features of this PR not immediately related to its purpose** - Implementing the new CumlArray infrastructure required us to break many of the existing circular imports in the codebase - New [utilities](https://github.com/wphicks/cuml/blob/fea-xpu_infra/python/cuml/internals/safe_imports.py) for "safe" imports in the context of GPU-only or CPU-only installs were introduced **Anticipated follow-on PRs** - rapidsai#5001 - rapidsai#4970 - PR(s) to make all CPU/GPU-exclusive imports "safe" - PR(s) to add additional testing for CPU-only functionality Authors: - William Hicks (https://github.com/wphicks) - Victor Lafargue (https://github.com/viclafargue) - Corey J. Nolet (https://github.com/cjnolet) Approvers:
Authors: - Victor Lafargue (https://github.com/viclafargue) - William Hicks (https://github.com/wphicks) - Corey J. Nolet (https://github.com/cjnolet) - Dante Gama Dessavre (https://github.com/dantegd) - Carl Simon Adorf (https://github.com/csadorf) Approvers: - Dante Gama Dessavre (https://github.com/dantegd) URL: rapidsai#5001
No description provided.