/*! * Copyright 2015 by Contributors * \file simple_dmatrix.h * \brief In-memory version of DMatrix. * \author Tianqi Chen */ #ifndef XGBOOST_DATA_SIMPLE_DMATRIX_H_ #define XGBOOST_DATA_SIMPLE_DMATRIX_H_ #include #include #include #include namespace xgboost { namespace data { // Used for single batch data. class SimpleDMatrix : public DMatrix { public: template explicit SimpleDMatrix(AdapterT* adapter, float missing, int nthread); explicit SimpleDMatrix(dmlc::Stream* in_stream); ~SimpleDMatrix() override = default; void SaveToLocalFile(const std::string& fname); MetaInfo& Info() override; const MetaInfo& Info() const override; bool SingleColBlock() const override { return true; } /*! \brief magic number used to identify SimpleDMatrix binary files */ static const int kMagic = 0xffffab01; private: BatchSet GetRowBatches() override; BatchSet GetColumnBatches() override; BatchSet GetSortedColumnBatches() override; BatchSet GetEllpackBatches(const BatchParam& param) override; MetaInfo info_; SparsePage sparse_page_; // Primary storage type std::unique_ptr column_page_; std::unique_ptr sorted_column_page_; std::unique_ptr ellpack_page_; BatchParam batch_param_; bool EllpackExists() const override { return static_cast(ellpack_page_); } bool SparsePageExists() const override { return true; } }; } // namespace data } // namespace xgboost #endif // XGBOOST_DATA_SIMPLE_DMATRIX_H_