merge latest changes
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Copyright 2019-2023, XGBoost Contributors
|
||||
* Copyright 2019-2024, XGBoost Contributors
|
||||
*/
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
@@ -639,6 +639,40 @@ TEST(Json, TypedArray) {
|
||||
ASSERT_EQ(arr[i + 8], i);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
Json f64{Object{}};
|
||||
auto array = F64Array();
|
||||
auto& vec = array.GetArray();
|
||||
// Construct test data
|
||||
vec.resize(18);
|
||||
std::iota(vec.begin(), vec.end(), 0.0);
|
||||
// special values
|
||||
vec.push_back(std::numeric_limits<double>::epsilon());
|
||||
vec.push_back(std::numeric_limits<double>::max());
|
||||
vec.push_back(std::numeric_limits<double>::min());
|
||||
vec.push_back(std::numeric_limits<double>::denorm_min());
|
||||
vec.push_back(std::numeric_limits<double>::quiet_NaN());
|
||||
|
||||
static_assert(
|
||||
std::is_same_v<double, typename std::remove_reference_t<decltype(vec)>::value_type>);
|
||||
|
||||
f64["f64"] = std::move(array);
|
||||
ASSERT_TRUE(IsA<F64Array>(f64["f64"]));
|
||||
std::vector<char> out;
|
||||
Json::Dump(f64, &out, std::ios::binary);
|
||||
|
||||
auto loaded = Json::Load(StringView{out.data(), out.size()}, std::ios::binary);
|
||||
ASSERT_TRUE(IsA<F64Array>(loaded["f64"]));
|
||||
auto const& result = get<F64Array const>(loaded["f64"]);
|
||||
|
||||
auto& vec1 = get<F64Array const>(f64["f64"]);
|
||||
ASSERT_EQ(result.size(), vec1.size());
|
||||
for (std::size_t i = 0; i < vec1.size() - 1; ++i) {
|
||||
ASSERT_EQ(result[i], vec1[i]);
|
||||
}
|
||||
ASSERT_TRUE(std::isnan(result.back()));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(UBJson, Basic) {
|
||||
@@ -677,8 +711,24 @@ TEST(UBJson, Basic) {
|
||||
ASSERT_FLOAT_EQ(3.14, get<Number>(get<Array>(ret["test"])[1]));
|
||||
ASSERT_FLOAT_EQ(2.71, get<Number>(get<Array>(ret["test"])[0]));
|
||||
}
|
||||
{
|
||||
// boolean
|
||||
Json boolean{Object{}};
|
||||
boolean["foo"] = Boolean{false};
|
||||
std::vector<char> out;
|
||||
Json::Dump(boolean, &out, std::ios::binary);
|
||||
auto loaded = Json::Load(StringView{out.data(), out.size()}, std::ios::binary);
|
||||
|
||||
ASSERT_EQ(boolean, loaded);
|
||||
|
||||
boolean["foo"] = Boolean{true};
|
||||
Json::Dump(boolean, &out, std::ios::binary);
|
||||
loaded = Json::Load(StringView{out.data(), out.size()}, std::ios::binary);
|
||||
ASSERT_EQ(boolean, loaded);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TEST(Json, TypeCheck) {
|
||||
Json config{Object{}};
|
||||
config["foo"] = String{"bar"};
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
/**
|
||||
* Copyright 2021-2023 by XGBoost Contributors
|
||||
* Copyright 2021-2024, XGBoost Contributors
|
||||
*/
|
||||
#include <gtest/gtest.h>
|
||||
#include <thrust/equal.h> // for equal
|
||||
#include <thrust/sequence.h> // for sequence
|
||||
|
||||
#include "../../../src/common/cuda_context.cuh"
|
||||
#include "../../../src/common/linalg_op.cuh"
|
||||
#include "../helpers.h"
|
||||
#include "xgboost/context.h"
|
||||
@@ -84,4 +88,23 @@ void TestSlice() {
|
||||
TEST(Linalg, GPUElementWise) { TestElementWiseKernel(); }
|
||||
|
||||
TEST(Linalg, GPUTensorView) { TestSlice(); }
|
||||
|
||||
TEST(Linalg, GPUIter) {
|
||||
auto ctx = MakeCUDACtx(1);
|
||||
auto cuctx = ctx.CUDACtx();
|
||||
|
||||
dh::device_vector<double> data(2 * 3 * 4);
|
||||
thrust::sequence(cuctx->CTP(), data.begin(), data.end(), 1.0);
|
||||
|
||||
auto t = MakeTensorView(&ctx, dh::ToSpan(data), 2, 3, 4);
|
||||
static_assert(!std::is_const_v<decltype(t)::element_type>);
|
||||
static_assert(!std::is_const_v<decltype(t)::value_type>);
|
||||
|
||||
auto n = std::distance(linalg::tcbegin(t), linalg::tcend(t));
|
||||
ASSERT_EQ(n, t.Size());
|
||||
ASSERT_FALSE(t.Empty());
|
||||
|
||||
bool eq = thrust::equal(cuctx->CTP(), data.cbegin(), data.cend(), linalg::tcbegin(t));
|
||||
ASSERT_TRUE(eq);
|
||||
}
|
||||
} // namespace xgboost::linalg
|
||||
|
||||
@@ -97,4 +97,9 @@ TEST(XGBoostParameter, Update) {
|
||||
ASSERT_NEAR(p.f, 2.71828f, kRtEps);
|
||||
ASSERT_NEAR(p.d, 2.71828, kRtEps); // default
|
||||
}
|
||||
|
||||
// Just in case dmlc's use of global memory has any impact in parameters.
|
||||
UpdatableParam a, b;
|
||||
a.UpdateAllowUnknown(xgboost::Args{{"f", "2.71828"}});
|
||||
ASSERT_NE(a.f, b.f);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user