Implement unified update prediction cache for (gpu_)hist. (#6860)
* Implement utilites for linalg. * Unify the update prediction cache functions. * Implement update prediction cache for multi-class gpu hist.
This commit is contained in:
38
tests/cpp/common/test_linalg.cc
Normal file
38
tests/cpp/common/test_linalg.cc
Normal file
@@ -0,0 +1,38 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <xgboost/linalg.h>
|
||||
#include <numeric>
|
||||
|
||||
namespace xgboost {
|
||||
|
||||
auto MakeMatrixFromTest(HostDeviceVector<float> *storage, size_t n_rows, size_t n_cols) {
|
||||
storage->Resize(n_rows * n_cols);
|
||||
auto& h_storage = storage->HostVector();
|
||||
|
||||
std::iota(h_storage.begin(), h_storage.end(), 0);
|
||||
|
||||
auto m = MatrixView<float>{storage, {n_cols, 1}, {n_rows, n_cols}, -1};
|
||||
return m;
|
||||
|
||||
}
|
||||
|
||||
TEST(Linalg, Matrix) {
|
||||
size_t kRows = 31, kCols = 77;
|
||||
HostDeviceVector<float> storage;
|
||||
auto m = MakeMatrixFromTest(&storage, kRows, kCols);
|
||||
ASSERT_EQ(m.DeviceIdx(), GenericParameter::kCpuId);
|
||||
ASSERT_EQ(m(0, 0), 0);
|
||||
ASSERT_EQ(m(kRows - 1, kCols - 1), storage.Size() - 1);
|
||||
}
|
||||
|
||||
TEST(Linalg, Vector) {
|
||||
size_t kRows = 31, kCols = 77;
|
||||
HostDeviceVector<float> storage;
|
||||
auto m = MakeMatrixFromTest(&storage, kRows, kCols);
|
||||
auto v = VectorView<float>(m, 3);
|
||||
for (size_t i = 0; i < v.Size(); ++i) {
|
||||
ASSERT_EQ(v[i], m(i, 3));
|
||||
}
|
||||
|
||||
ASSERT_EQ(v[0], 3);
|
||||
}
|
||||
} // namespace xgboost
|
||||
Reference in New Issue
Block a user