Skip to content

[mt] Implement partitioning for GPU.#11789

Merged
trivialfis merged 8 commits into
dmlc:masterfrom
trivialfis:mt-gpu-hist-part
Nov 4, 2025
Merged

[mt] Implement partitioning for GPU.#11789
trivialfis merged 8 commits into
dmlc:masterfrom
trivialfis:mt-gpu-hist-part

Conversation

@trivialfis

@trivialfis trivialfis commented Nov 3, 2025

Copy link
Copy Markdown
Member

XGBoost can now grow a full vector-leaf tree using a GPU. However, the implementation is still minimal and has low performance.

I would like to explore some algorithmic optimizations before adding any more complexity to the code.

ref #9043

work on build hist.

notes.

work on evaluation.

build all nodes.

inputs.

getter.

alloc.

proto.

apply.

disable.

Work on high-level tests.

lint.

cleanup.

test policy.

lazy gen.

Fix scan.

Cleanup.

Cleanup single split.
@trivialfis
trivialfis requested a review from Copilot November 3, 2025 06:47
@trivialfis trivialfis mentioned this pull request Nov 3, 2025
48 tasks

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements GPU support for multi-target training with vector leaves. The key changes enable multi-target tree building on GPU by extending the histogram-based tree construction algorithm to handle multiple targets simultaneously.

Key changes:

  • Removed the GPU restriction check for vector leaf training in gbtree.cc
  • Implemented multi-target histogram building and split evaluation on GPU with batch processing for multiple nodes
  • Refactored test code to share common multi-target test logic between CPU and GPU tests
  • Added GoLeftWrapperOp wrapper to the cuda_impl namespace for consistent row partitioning

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/gbm/gbtree.cc Removed GPU restriction for vector leaf training
src/tree/updater_gpu_hist.cuh Implemented multi-target histogram maker with node sum tracking and batch split evaluation
src/tree/updater_gpu_hist.cu Moved GoLeftWrapperOp to namespace, code formatting cleanup
src/tree/gpu_hist/evaluate_splits.cuh Made parent_sum const-qualified for multi-target split inputs
src/tree/gpu_hist/multi_evaluate_splits.cuh Added batch split evaluation and node sum tracking methods
src/tree/gpu_hist/multi_evaluate_splits.cu Refactored to support batch processing of multiple nodes, fixed gradient index calculation
python-package/xgboost/testing/multi_target.py Created shared test helpers for multi-target training
tests/python/test_multi_target.py Refactored to use shared test helpers
tests/python-gpu/test_gpu_multi_target.py Added GPU multi-target tests using shared helpers

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/tree/updater_gpu_hist.cuh Outdated
Comment thread src/tree/updater_gpu_hist.cuh
Comment thread python-package/xgboost/testing/multi_target.py
@trivialfis
trivialfis requested a review from Copilot November 3, 2025 07:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@trivialfis trivialfis changed the title [wip][mt] Implement partitioning for GPU. [mt] Implement partitioning for GPU. Nov 3, 2025
@trivialfis
trivialfis marked this pull request as ready for review November 3, 2025 07:17
@trivialfis

Copy link
Copy Markdown
Member Author

cc @rongou

@trivialfis
trivialfis merged commit b5201b1 into dmlc:master Nov 4, 2025
103 of 120 checks passed
@trivialfis
trivialfis deleted the mt-gpu-hist-part branch November 4, 2025 01:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants