xgboost/tests/cpp/data/test_extmem_quantile_dmatrix.cu

46 lines
1.7 KiB
Plaintext

/**
* Copyright 2024, XGBoost Contributors
*/
#include <gtest/gtest.h>
#include <xgboost/data.h> // for BatchParam
#include <vector> // for vector
#include "../../../src/data/ellpack_page.cuh" // for EllpackPageImpl
#include "../helpers.h" // for RandomDataGenerator
#include "test_extmem_quantile_dmatrix.h" // for TestExtMemQdmBasic
namespace xgboost::data {
class ExtMemQuantileDMatrixGpu : public ::testing::TestWithParam<float> {
public:
void Run(float sparsity) {
auto equal = [](Context const* ctx, EllpackPage const& orig, EllpackPage const& sparse) {
auto const& orig_cuts = orig.Cuts();
auto const& sparse_cuts = sparse.Cuts();
ASSERT_EQ(orig_cuts.Values(), sparse_cuts.Values());
ASSERT_EQ(orig_cuts.MinValues(), sparse_cuts.MinValues());
ASSERT_EQ(orig_cuts.Ptrs(), sparse_cuts.Ptrs());
std::vector<common::CompressedByteT> h_orig, h_sparse;
auto orig_acc = orig.Impl()->GetHostAccessor(ctx, &h_orig, {});
auto sparse_acc = sparse.Impl()->GetHostAccessor(ctx, &h_sparse, {});
ASSERT_EQ(h_orig.size(), h_sparse.size());
auto equal = std::equal(h_orig.cbegin(), h_orig.cend(), h_sparse.cbegin());
ASSERT_TRUE(equal);
};
auto ctx = MakeCUDACtx(0);
TestExtMemQdmBasic<EllpackPage>(&ctx, true, sparsity, equal);
TestExtMemQdmBasic<EllpackPage>(&ctx, false, sparsity, equal);
}
};
TEST_P(ExtMemQuantileDMatrixGpu, Basic) { this->Run(this->GetParam()); }
INSTANTIATE_TEST_SUITE_P(ExtMemQuantileDMatrix, ExtMemQuantileDMatrixGpu, ::testing::ValuesIn([] {
std::vector<float> sparsities{0.0f, 0.2f, 0.4f, 0.8f};
return sparsities;
}()));
} // namespace xgboost::data