xgboost/src/data/sparse_page_dmatrix.cc
2020-03-11 10:15:53 +13:00

60 lines
1.5 KiB
C++

/*!
* Copyright 2014-2020 by Contributors
* \file sparse_page_dmatrix.cc
* \brief The external memory version of Page Iterator.
* \author Tianqi Chen
*/
#include <dmlc/base.h>
#include <dmlc/timer.h>
#if DMLC_ENABLE_STD_THREAD
#include "./sparse_page_dmatrix.h"
#include "./simple_batch_iterator.h"
namespace xgboost {
namespace data {
MetaInfo& SparsePageDMatrix::Info() {
return row_source_->info;
}
const MetaInfo& SparsePageDMatrix::Info() const {
return row_source_->info;
}
BatchSet<SparsePage> SparsePageDMatrix::GetRowBatches() {
return row_source_->GetBatchSet();
}
BatchSet<CSCPage> SparsePageDMatrix::GetColumnBatches() {
// Lazily instantiate
if (!column_source_) {
column_source_.reset(new CSCPageSource(this, cache_info_));
}
return column_source_->GetBatchSet();
}
BatchSet<SortedCSCPage> SparsePageDMatrix::GetSortedColumnBatches() {
// Lazily instantiate
if (!sorted_column_source_) {
sorted_column_source_.reset(new SortedCSCPageSource(this, cache_info_));
}
return sorted_column_source_->GetBatchSet();
}
BatchSet<EllpackPage> SparsePageDMatrix::GetEllpackBatches(const BatchParam& param) {
CHECK_GE(param.gpu_id, 0);
CHECK_GE(param.max_bin, 2);
// Lazily instantiate
if (!ellpack_source_ || (batch_param_ != param && param != BatchParam{})) {
ellpack_source_.reset(new EllpackPageSource(this, cache_info_, param));
batch_param_ = param;
}
return ellpack_source_->GetBatchSet();
}
} // namespace data
} // namespace xgboost
#endif // DMLC_ENABLE_STD_THREAD