[breaking] Remove dense libsvm parser plugin. (#9799)
This commit is contained in:
parent
1877cb8e83
commit
e9260de3f3
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@ -29,7 +29,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DGOOGLE_TEST=ON -DUSE_OPENMP=ON -DUSE_DMLC_GTEST=ON -DPLUGIN_DENSE_PARSER=ON -GNinja -DBUILD_DEPRECATED_CLI=ON
|
cmake .. -DGOOGLE_TEST=ON -DUSE_OPENMP=ON -DUSE_DMLC_GTEST=ON -GNinja -DBUILD_DEPRECATED_CLI=ON
|
||||||
ninja -v
|
ninja -v
|
||||||
- name: Run gtest binary
|
- name: Run gtest binary
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@ -99,7 +99,6 @@ set(ENABLED_SANITIZERS "address" "leak" CACHE STRING
|
|||||||
"Semicolon separated list of sanitizer names. E.g 'address;leak'. Supported sanitizers are
|
"Semicolon separated list of sanitizer names. E.g 'address;leak'. Supported sanitizers are
|
||||||
address, leak, undefined and thread.")
|
address, leak, undefined and thread.")
|
||||||
## Plugins
|
## Plugins
|
||||||
option(PLUGIN_DENSE_PARSER "Build dense parser plugin" OFF)
|
|
||||||
option(PLUGIN_RMM "Build with RAPIDS Memory Manager (RMM)" OFF)
|
option(PLUGIN_RMM "Build with RAPIDS Memory Manager (RMM)" OFF)
|
||||||
option(PLUGIN_FEDERATED "Build with Federated Learning" OFF)
|
option(PLUGIN_FEDERATED "Build with Federated Learning" OFF)
|
||||||
## TODO: 1. Add check if DPC++ compiler is used for building
|
## TODO: 1. Add check if DPC++ compiler is used for building
|
||||||
@ -185,6 +184,9 @@ endif()
|
|||||||
if(USE_HDFS)
|
if(USE_HDFS)
|
||||||
message(SEND_ERROR "The option `USE_HDFS` has been removed from XGBoost")
|
message(SEND_ERROR "The option `USE_HDFS` has been removed from XGBoost")
|
||||||
endif()
|
endif()
|
||||||
|
if(PLUGIN_DENSE_PARSER)
|
||||||
|
message(SEND_ERROR "The option `PLUGIN_DENSE_PARSER` has been removed from XGBoost.")
|
||||||
|
endif()
|
||||||
|
|
||||||
#-- Sanitizer
|
#-- Sanitizer
|
||||||
if(USE_SANITIZER)
|
if(USE_SANITIZER)
|
||||||
|
|||||||
@ -1,7 +1,3 @@
|
|||||||
if(PLUGIN_DENSE_PARSER)
|
|
||||||
target_sources(objxgboost PRIVATE ${xgboost_SOURCE_DIR}/plugin/dense_parser/dense_libsvm.cc)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(PLUGIN_UPDATER_ONEAPI)
|
if(PLUGIN_UPDATER_ONEAPI)
|
||||||
add_library(oneapi_plugin OBJECT
|
add_library(oneapi_plugin OBJECT
|
||||||
${xgboost_SOURCE_DIR}/plugin/updater_oneapi/regression_obj_oneapi.cc
|
${xgboost_SOURCE_DIR}/plugin/updater_oneapi/regression_obj_oneapi.cc
|
||||||
|
|||||||
@ -36,5 +36,3 @@ The register macros available to plugin writers are:
|
|||||||
And from dmlc-core:
|
And from dmlc-core:
|
||||||
|
|
||||||
- DMLC_REGISTER_PARAMETER - Register a set of parameter for a specific usecase
|
- DMLC_REGISTER_PARAMETER - Register a set of parameter for a specific usecase
|
||||||
- DMLC_REGISTER_DATA_PARSER - Register a data parser where the data can be
|
|
||||||
represented by a URL. This is used by DMatrix.
|
|
||||||
|
|||||||
@ -1,87 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Copyright 2015 by Contributors
|
|
||||||
* \file dense_libsvm.cc
|
|
||||||
* \brief Plugin to load in libsvm, but fill all the missing entries with zeros.
|
|
||||||
* This plugin is mainly used for benchmark purposes and do not need to be included.
|
|
||||||
*/
|
|
||||||
#include <xgboost/base.h>
|
|
||||||
#include <dmlc/data.h>
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
namespace dmlc {
|
|
||||||
namespace data {
|
|
||||||
|
|
||||||
template<typename IndexType>
|
|
||||||
class DensifyParser : public dmlc::Parser<IndexType> {
|
|
||||||
public:
|
|
||||||
DensifyParser(dmlc::Parser<IndexType>* parser, uint32_t num_col)
|
|
||||||
: parser_(parser), num_col_(num_col) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void BeforeFirst() override {
|
|
||||||
parser_->BeforeFirst();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Next() override {
|
|
||||||
if (!parser_->Next()) return false;
|
|
||||||
const RowBlock<IndexType>& batch = parser_->Value();
|
|
||||||
LOG(INFO) << batch.size;
|
|
||||||
dense_index_.resize(num_col_ * batch.size);
|
|
||||||
dense_value_.resize(num_col_ * batch.size);
|
|
||||||
std::fill(dense_value_.begin(), dense_value_.end(), 0.0);
|
|
||||||
offset_.resize(batch.size + 1);
|
|
||||||
offset_[0] = 0;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < batch.size; ++i) {
|
|
||||||
offset_[i + 1] = (i + 1) * num_col_;
|
|
||||||
Row<IndexType> row = batch[i];
|
|
||||||
for (uint32_t j = 0; j < num_col_; ++j) {
|
|
||||||
dense_index_[i * num_col_ + j] = j;
|
|
||||||
}
|
|
||||||
for (unsigned k = 0; k < row.length; ++k) {
|
|
||||||
uint32_t index = row.get_index(k);
|
|
||||||
CHECK_LT(index, num_col_)
|
|
||||||
<< "Featuere index larger than num_col";
|
|
||||||
dense_value_[i * num_col_ + index] = row.get_value(k);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
out_ = batch;
|
|
||||||
out_.index = dmlc::BeginPtr(dense_index_);
|
|
||||||
out_.value = dmlc::BeginPtr(dense_value_);
|
|
||||||
out_.offset = dmlc::BeginPtr(offset_);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const dmlc::RowBlock<IndexType>& Value() const override {
|
|
||||||
return out_;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t BytesRead() const override {
|
|
||||||
return parser_->BytesRead();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
RowBlock<IndexType> out_;
|
|
||||||
std::unique_ptr<Parser<IndexType> > parser_;
|
|
||||||
uint32_t num_col_;
|
|
||||||
std::vector<size_t> offset_;
|
|
||||||
std::vector<IndexType> dense_index_;
|
|
||||||
std::vector<xgboost::bst_float> dense_value_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename IndexType, typename DType = real_t>
|
|
||||||
Parser<IndexType> *
|
|
||||||
CreateDenseLibSVMParser(const std::string& path,
|
|
||||||
const std::map<std::string, std::string>& args,
|
|
||||||
unsigned part_index,
|
|
||||||
unsigned num_parts) {
|
|
||||||
CHECK_NE(args.count("num_col"), 0) << "expect num_col in dense_libsvm";
|
|
||||||
return new DensifyParser<IndexType>(
|
|
||||||
Parser<IndexType>::Create(path.c_str(), part_index, num_parts, "libsvm"),
|
|
||||||
uint32_t(atoi(args.at("num_col").c_str())));
|
|
||||||
}
|
|
||||||
} // namespace data
|
|
||||||
|
|
||||||
DMLC_REGISTER_DATA_PARSER(uint32_t, real_t, dense_libsvm,
|
|
||||||
data::CreateDenseLibSVMParser<uint32_t __DMLC_COMMA real_t>);
|
|
||||||
} // namespace dmlc
|
|
||||||
@ -17,14 +17,10 @@ class BuildConfiguration: # pylint: disable=R0902
|
|||||||
use_nccl: bool = False
|
use_nccl: bool = False
|
||||||
# Whether to load nccl dynamically
|
# Whether to load nccl dynamically
|
||||||
use_dlopen_nccl: bool = False
|
use_dlopen_nccl: bool = False
|
||||||
# Whether to enable HDFS
|
# Whether to enable federated learning
|
||||||
use_hdfs: bool = False
|
plugin_federated: bool = False
|
||||||
# Whether to enable Azure Storage
|
# Whether to enable rmm support
|
||||||
use_azure: bool = False
|
plugin_rmm: bool = False
|
||||||
# Whether to enable AWS S3
|
|
||||||
use_s3: bool = False
|
|
||||||
# Whether to enable the dense parser plugin
|
|
||||||
plugin_dense_parser: bool = False
|
|
||||||
# Special option: See explanation below
|
# Special option: See explanation below
|
||||||
use_system_libxgboost: bool = False
|
use_system_libxgboost: bool = False
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@ $command_wrapper rm -fv dmlc-core/include/dmlc/build_config_default.h
|
|||||||
# include/dmlc/build_config_default.h.
|
# include/dmlc/build_config_default.h.
|
||||||
echo "--- Build libxgboost from the source"
|
echo "--- Build libxgboost from the source"
|
||||||
$command_wrapper tests/ci_build/build_via_cmake.sh -DCMAKE_PREFIX_PATH=/opt/grpc \
|
$command_wrapper tests/ci_build/build_via_cmake.sh -DCMAKE_PREFIX_PATH=/opt/grpc \
|
||||||
-DPLUGIN_DENSE_PARSER=ON -DPLUGIN_FEDERATED=ON
|
-DPLUGIN_FEDERATED=ON
|
||||||
echo "--- Run Google Test"
|
echo "--- Run Google Test"
|
||||||
$command_wrapper bash -c "cd build && ctest --extra-verbose"
|
$command_wrapper bash -c "cd build && ctest --extra-verbose"
|
||||||
echo "--- Stash XGBoost CLI executable"
|
echo "--- Stash XGBoost CLI executable"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user