gpu_hist performance tweaks (#5707)

* Remove device vectors

* Remove allreduce synchronize

* Remove double buffer
This commit is contained in:
Rory Mitchell
2020-05-29 16:48:53 +12:00
committed by GitHub
parent ca0d605b34
commit f779980f7e
4 changed files with 33 additions and 75 deletions

View File

@@ -427,36 +427,6 @@ class TemporaryArray {
size_t size_;
};
/**
* \brief A double buffer, useful for algorithms like sort.
*/
template <typename T>
class DoubleBuffer {
public:
cub::DoubleBuffer<T> buff;
xgboost::common::Span<T> a, b;
DoubleBuffer() = default;
template <typename VectorT>
DoubleBuffer(VectorT *v1, VectorT *v2) {
a = xgboost::common::Span<T>(v1->data().get(), v1->size());
b = xgboost::common::Span<T>(v2->data().get(), v2->size());
buff = cub::DoubleBuffer<T>(a.data(), b.data());
}
size_t Size() const {
CHECK_EQ(a.size(), b.size());
return a.size();
}
cub::DoubleBuffer<T> &CubBuffer() { return buff; }
T *Current() { return buff.Current(); }
xgboost::common::Span<T> CurrentSpan() {
return xgboost::common::Span<T>{buff.Current(), Size()};
}
T *Other() { return buff.Alternate(); }
};
/**
* \brief Copies device span to std::vector.
*