[CUDA] consolidate CUDA versions
breaking
## Changes
Proposes removing the CUDA implementation from #3160.
As of this PR, the only CUDA build of LightGBM would be the one we've been calling `cuda_exp`, which @shiyu1994 started in #4528 and #4630.
Specifically:
* removes all mentions of "CUDA exp" or "CUDA Experimental" in docs and internal code
* removes all code specific only to the implementation from #3160
* when using `python setup.py --cuda-exp` or `cmake -DUSE_CUDA_EXP=1`, raises a deprecation warning and still uses the version we've been until now calling "cuda_exp"
* removes 2 CUDA CI jobs, so now there will be three, one each for `pip`, `source`, and `wheel` builds of the CUDA-enabled Python package
* increases the minimum supported CUDA version from 9.0 to 10.0
## History
*(please correct me if I've mischaracterized the history below)*
In #3160 (*merged September 2020*), a team from IBM added a first CUDA implementation of LightGBM because the existing OpenCL-based build didn't support some platforms (namely, IBM Power).
About a year after that, @shiyu1994 and @guolinke (along with others at Microsoft?) started on an "experimental" CUDA implementation.
That "experimental" implementation was first merged in #4630 (March 2022), and since then we've had two CUDA implementations maintained in this repo:
* `cuda` = the IBM contribution
* `cuda_exp` = the newer implementation from Microsoft
Since then, @shiyu1994 has been working actively on that `cuda_exp` version, with the plan to include it in a v4.0.0 release (#5153).
The `cuda_exp` version is still missing some important features, like distributed training (#5076) and on-GPU computation of metrics and loss functions (#5163).
Despite the current limitations, this PR implements the proposal from https://github.com/microsoft/LightGBM/issues/5153#issuecomment-1369382641 to consolidate down to only one CUDA implementation in LightGBM... the one currently called `cuda_exp`.
## Motivation for this change
In my opinion, LightGBM does not have enough maintainer/contributor availability to maintain two separate CUDA implementations.
Consolidating down to 1 allows the project to more effectively channel the limited attention of its maintainers and contributors towards improving the LightGBM-on-GPU experience, by not duplicating effort across two different builds intended to serve the same purpose.
* improves development velocity by removing two costly CI jobs
* reduces confusion for users wanting to run GPU-accelerated LightGBM
* noticeably simplifies the codebase and reduces its size
* focuses all feature requests, bug reports, code contributions, etc. on one CUDA implementation
This represents a temporary loss of functionality (e.g. multi-GPU training), but I think it'll help the project to move faster and @shiyu1994 has said that that functionality is actively under development for the `cuda_exp` implementation.
## Notes for Reviewers
I know this is a large change, so tagging in others for their opinions.
@shiyu1994 @guolinke @huanzhang12 @jmoralez @StrikerRUS @btrotta @ChipKerchner @ceseo
👋 Thanks all for your consideration.
合并状态:未合并 关闭于 2023-02-01 13 条评论