ITADN

[CUDA] consolidate CUDA versions

#5677Pull Requestjameslamb 创建于 2023-01-17
breaking
J
jameslambcommented
## 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 条评论