// Copyright (c) 2019 by Contributors #include #include #include #include #include #include "../../../src/common/bitfield.h" #include "../../../src/common/device_helpers.cuh" #include "../../../src/data/simple_csr_source.h" #include "../../../src/data/columnar.h" namespace xgboost { template Json GenerateDenseColumn(std::string const& typestr, size_t kRows, thrust::device_vector* out_d_data) { auto& d_data = *out_d_data; d_data.resize(kRows); Json column { Object() }; std::vector j_shape {Json(Integer(static_cast(kRows)))}; column["shape"] = Array(j_shape); column["strides"] = Array(std::vector{Json(Integer(static_cast(sizeof(T))))}); d_data.resize(kRows); thrust::sequence(thrust::device, d_data.begin(), d_data.end(), 0.0f, 2.0f); auto p_d_data = dh::Raw(d_data); std::vector j_data { Json(Integer(reinterpret_cast(p_d_data))), Json(Boolean(false))}; column["data"] = j_data; column["version"] = Integer(static_cast(1)); column["typestr"] = String(typestr); return column; } template Json GenerateSparseColumn(std::string const& typestr, size_t kRows, thrust::device_vector* out_d_data) { auto& d_data = *out_d_data; Json column { Object() }; std::vector j_shape {Json(Integer(static_cast(kRows)))}; column["shape"] = Array(j_shape); column["strides"] = Array(std::vector{Json(Integer(static_cast(sizeof(T))))}); d_data.resize(kRows); for (size_t i = 0; i < d_data.size(); ++i) { d_data[i] = i * 2.0; } auto p_d_data = dh::Raw(d_data); std::vector j_data { Json(Integer(reinterpret_cast(p_d_data))), Json(Boolean(false))}; column["data"] = j_data; column["version"] = Integer(static_cast(1)); column["typestr"] = String(typestr); return column; } } // namespace xgboost