@@ -114,7 +114,7 @@ class EvaluateSplitAgent {
114
114
for (int scan_begin = gidx_begin; scan_begin < gidx_end; scan_begin += kBlockSize ) {
115
115
bool thread_active = (scan_begin + threadIdx .x ) < gidx_end;
116
116
GradientPairInt64 bin = thread_active ? LoadGpair (node_histogram + scan_begin + threadIdx .x )
117
- : GradientPairInt64 ();
117
+ : GradientPairInt64 ();
118
118
#if CUB_VERSION >= 300000
119
119
BlockScanT (temp_storage->scan ).ExclusiveScan (bin, bin, cuda::std::plus{}, prefix_op);
120
120
#else
@@ -142,6 +142,8 @@ class EvaluateSplitAgent {
142
142
best_split->Update (gain, missing_left ? kLeftDir : kRightDir , fvalue, fidx, left, right,
143
143
false , param, rounding);
144
144
}
145
+
146
+ __syncwarp ();
145
147
}
146
148
}
147
149
@@ -172,6 +174,8 @@ class EvaluateSplitAgent {
172
174
best_split->UpdateCat (gain, missing_left ? kLeftDir : kRightDir ,
173
175
static_cast <bst_cat_t >(fvalue), fidx, left, right, param, rounding);
174
176
}
177
+
178
+ __syncwarp ();
175
179
}
176
180
}
177
181
/* *
@@ -200,6 +204,8 @@ class EvaluateSplitAgent {
200
204
best_split->UpdateCat (gain, missing_left ? kLeftDir : kRightDir , best_thresh, fidx, left_sum,
201
205
right_sum, param, rounding);
202
206
}
207
+
208
+ __syncwarp ();
203
209
}
204
210
/* *
205
211
* \brief Partition-based split for categorical feature.
0 commit comments