// Copyright by Contributors #include #include #include TEST(c_api, XGDMatrixCreateFromMat_omp) { std::vector num_rows = {100, 11374, 15000}; for (auto row : num_rows) { int num_cols = 50; int num_missing = 5; DMatrixHandle handle; std::vector data(num_cols * row, 1.5); for (int i = 0; i < num_missing; i++) { data[i] = std::numeric_limits::quiet_NaN(); } XGDMatrixCreateFromMat_omp(data.data(), row, num_cols, std::numeric_limits::quiet_NaN(), &handle, 0); std::shared_ptr dmat = *static_cast *>(handle); xgboost::MetaInfo &info = dmat->Info(); ASSERT_EQ(info.num_col_, num_cols); ASSERT_EQ(info.num_row_, row); ASSERT_EQ(info.num_nonzero_, num_cols * row - num_missing); auto iter = dmat->RowIterator(); iter->BeforeFirst(); while (iter->Next()) { auto batch = iter->Value(); for (int i = 0; i < batch.Size(); i++) { auto inst = batch[i]; for (int j = 0; i < inst.length; i++) { ASSERT_EQ(inst[j].fvalue, 1.5); } } } } }