Description
I identified a possible bug in LightGBM's feature-parallel mode that directly affects the quality of cuts in distributed scenarios. Specifically, the SyncUpGlobalBestSplit function is receiving the same input buffer twice, instead of also using the output buffer, which prevents proper synchronization of “best splits” across machines and can result in suboptimal models
File: src/treelearner/feature_parallel_tree_learner.cpp
Line 71
SyncUpGlobalBestSplit(
input_buffer_.data(),
input_buffer_.data(), // ← should be output_buffer_.data()
&smaller_best_split,
&larger_best_split,
this->config_->max_cat_threshold
);