From 4787108b5f84868a493e8874ea0b2d05b0a9b34f Mon Sep 17 00:00:00 2001 From: tqchen Date: Tue, 26 Aug 2014 20:10:07 -0700 Subject: [PATCH] change uint64_t to ulong, to make mac happy, this is final change --- R-package/src/xgboost_R.cpp | 6 ++-- wrapper/xgboost_R.cpp | 6 ++-- wrapper/xgboost_wrapper.cpp | 62 ++++++++++++++++++------------------- wrapper/xgboost_wrapper.h | 37 +++++++++++----------- 4 files changed, 56 insertions(+), 55 deletions(-) diff --git a/R-package/src/xgboost_R.cpp b/R-package/src/xgboost_R.cpp index 279ef3aea..63b74df31 100644 --- a/R-package/src/xgboost_R.cpp +++ b/R-package/src/xgboost_R.cpp @@ -119,7 +119,7 @@ extern "C" { } } SEXP XGDMatrixGetInfo_R(SEXP handle, SEXP field) { - uint64_t olen; + bst_ulong olen; const float *res = XGDMatrixGetFloatInfo(R_ExternalPtrAddr(handle), CHAR(asChar(field)), &olen); SEXP ret = PROTECT(allocVector(REALSXP, olen)); @@ -188,7 +188,7 @@ extern "C" { &vec_dmats[0], &vec_sptr[0], len)); } SEXP XGBoosterPredict_R(SEXP handle, SEXP dmat, SEXP output_margin) { - uint64_t olen; + bst_ulong olen; const float *res = XGBoosterPredict(R_ExternalPtrAddr(handle), R_ExternalPtrAddr(dmat), asInteger(output_margin), @@ -207,7 +207,7 @@ extern "C" { XGBoosterSaveModel(R_ExternalPtrAddr(handle), CHAR(asChar(fname))); } void XGBoosterDumpModel_R(SEXP handle, SEXP fname, SEXP fmap) { - uint64_t olen; + bst_ulong olen; const char **res = XGBoosterDumpModel(R_ExternalPtrAddr(handle), CHAR(asChar(fmap)), &olen); diff --git a/wrapper/xgboost_R.cpp b/wrapper/xgboost_R.cpp index c3a3044a9..88a320a4a 100644 --- a/wrapper/xgboost_R.cpp +++ b/wrapper/xgboost_R.cpp @@ -119,7 +119,7 @@ extern "C" { } } SEXP XGDMatrixGetInfo_R(SEXP handle, SEXP field) { - uint64_t olen; + bst_ulong olen; const float *res = XGDMatrixGetFloatInfo(R_ExternalPtrAddr(handle), CHAR(asChar(field)), &olen); SEXP ret = PROTECT(allocVector(REALSXP, olen)); @@ -188,7 +188,7 @@ extern "C" { &vec_dmats[0], &vec_sptr[0], len)); } SEXP XGBoosterPredict_R(SEXP handle, SEXP dmat, SEXP output_margin) { - uint64_t olen; + bst_ulong olen; const float *res = XGBoosterPredict(R_ExternalPtrAddr(handle), R_ExternalPtrAddr(dmat), asInteger(output_margin), @@ -207,7 +207,7 @@ extern "C" { XGBoosterSaveModel(R_ExternalPtrAddr(handle), CHAR(asChar(fname))); } void XGBoosterDumpModel_R(SEXP handle, SEXP fname, SEXP fmap) { - uint64_t olen; + bst_ulong olen; const char **res = XGBoosterDumpModel(R_ExternalPtrAddr(handle), CHAR(asChar(fmap)), &olen); diff --git a/wrapper/xgboost_wrapper.cpp b/wrapper/xgboost_wrapper.cpp index 860bc822c..d707a9dbc 100644 --- a/wrapper/xgboost_wrapper.cpp +++ b/wrapper/xgboost_wrapper.cpp @@ -23,14 +23,14 @@ class Booster: public learner::BoostLearner { this->init_model = false; this->SetCacheData(mats); } - const float *Pred(const DataMatrix &dmat, int output_margin, uint64_t *len) { + const float *Pred(const DataMatrix &dmat, int output_margin, bst_ulong *len) { this->CheckInitModel(); this->Predict(dmat, output_margin, &this->preds_); *len = this->preds_.size(); return &this->preds_[0]; } inline void BoostOneIter(const DataMatrix &train, - float *grad, float *hess, uint64_t len) { + float *grad, float *hess, bst_ulong len) { this->gpair_.resize(len); const bst_omp_uint ndata = static_cast(len); #pragma omp parallel for schedule(static) @@ -48,7 +48,7 @@ class Booster: public learner::BoostLearner { learner::BoostLearner::LoadModel(fname); this->init_model = true; } - inline const char** GetModelDump(const utils::FeatMap& fmap, bool with_stats, uint64_t *len) { + inline const char** GetModelDump(const utils::FeatMap& fmap, bool with_stats, bst_ulong *len) { model_dump = this->DumpModel(fmap, with_stats); model_dump_cptr.resize(model_dump.size()); for (size_t i = 0; i < model_dump.size(); ++i) { @@ -76,37 +76,37 @@ extern "C"{ void* XGDMatrixCreateFromFile(const char *fname, int silent) { return LoadDataMatrix(fname, silent, false); } - void* XGDMatrixCreateFromCSR(const uint64_t *indptr, + void* XGDMatrixCreateFromCSR(const bst_ulong *indptr, const unsigned *indices, const float *data, - uint64_t nindptr, - uint64_t nelem) { + bst_ulong nindptr, + bst_ulong nelem) { DMatrixSimple *p_mat = new DMatrixSimple(); DMatrixSimple &mat = *p_mat; mat.row_ptr_.resize(nindptr); - for (uint64_t i = 0; i < nindptr; ++i) { + for (bst_ulong i = 0; i < nindptr; ++i) { mat.row_ptr_[i] = static_cast(indptr[i]); } mat.row_data_.resize(nelem); - for (uint64_t i = 0; i < nelem; ++i) { + for (bst_ulong i = 0; i < nelem; ++i) { mat.row_data_[i] = SparseBatch::Entry(indices[i], data[i]); mat.info.info.num_col = std::max(mat.info.info.num_col, - static_cast(indices[i]+1)); + static_cast(indices[i]+1)); } mat.info.info.num_row = nindptr - 1; return p_mat; } void* XGDMatrixCreateFromMat(const float *data, - uint64_t nrow, - uint64_t ncol, + bst_ulong nrow, + bst_ulong ncol, float missing) { DMatrixSimple *p_mat = new DMatrixSimple(); DMatrixSimple &mat = *p_mat; mat.info.info.num_row = nrow; mat.info.info.num_col = ncol; - for (uint64_t i = 0; i < nrow; ++i, data += ncol) { - uint64_t nelem = 0; - for (uint64_t j = 0; j < ncol; ++j) { + for (bst_ulong i = 0; i < nrow; ++i, data += ncol) { + bst_ulong nelem = 0; + for (bst_ulong j = 0; j < ncol; ++j) { if (data[j] != missing) { mat.row_data_.push_back(SparseBatch::Entry(j, data[j])); ++nelem; @@ -118,7 +118,7 @@ extern "C"{ } void* XGDMatrixSliceDMatrix(void *handle, const int *idxset, - uint64_t len) { + bst_ulong len) { DMatrixSimple tmp; DataMatrix &dsrc = *static_cast(handle); if (dsrc.magic != DMatrixSimple::kMagic) { @@ -139,10 +139,10 @@ extern "C"{ iter->BeforeFirst(); utils::Assert(iter->Next(), "slice"); const SparseBatch &batch = iter->Value(); - for (uint64_t i = 0; i < len; ++i) { + for (bst_ulong i = 0; i < len; ++i) { const int ridx = idxset[i]; SparseBatch::Inst inst = batch[ridx]; - utils::Check(static_cast(ridx) < batch.size, "slice index exceed number of rows"); + utils::Check(static_cast(ridx) < batch.size, "slice index exceed number of rows"); ret.row_data_.resize(ret.row_data_.size() + inst.length); memcpy(&ret.row_data_[ret.row_ptr_.back()], inst.data, sizeof(SparseBatch::Entry) * inst.length); @@ -165,46 +165,46 @@ extern "C"{ void XGDMatrixSaveBinary(void *handle, const char *fname, int silent) { SaveDataMatrix(*static_cast(handle), fname, silent); } - void XGDMatrixSetFloatInfo(void *handle, const char *field, const float *info, uint64_t len) { + void XGDMatrixSetFloatInfo(void *handle, const char *field, const float *info, bst_ulong len) { std::vector &vec = static_cast(handle)->info.GetFloatInfo(field); vec.resize(len); memcpy(&vec[0], info, sizeof(float) * len); } - void XGDMatrixSetUIntInfo(void *handle, const char *field, const unsigned *info, uint64_t len) { + void XGDMatrixSetUIntInfo(void *handle, const char *field, const unsigned *info, bst_ulong len) { std::vector &vec = static_cast(handle)->info.GetUIntInfo(field); vec.resize(len); memcpy(&vec[0], info, sizeof(unsigned) * len); } - void XGDMatrixSetGroup(void *handle, const unsigned *group, uint64_t len) { + void XGDMatrixSetGroup(void *handle, const unsigned *group, bst_ulong len) { DataMatrix *pmat = static_cast(handle); pmat->info.group_ptr.resize(len + 1); pmat->info.group_ptr[0] = 0; - for (uint64_t i = 0; i < len; ++i) { + for (bst_ulong i = 0; i < len; ++i) { pmat->info.group_ptr[i+1] = pmat->info.group_ptr[i]+group[i]; } } - const float* XGDMatrixGetFloatInfo(const void *handle, const char *field, uint64_t* len) { + const float* XGDMatrixGetFloatInfo(const void *handle, const char *field, bst_ulong* len) { const std::vector &vec = static_cast(handle)->info.GetFloatInfo(field); *len = vec.size(); return &vec[0]; } - const unsigned* XGDMatrixGetUIntInfo(const void *handle, const char *field, uint64_t* len) { + const unsigned* XGDMatrixGetUIntInfo(const void *handle, const char *field, bst_ulong* len) { const std::vector &vec = static_cast(handle)->info.GetUIntInfo(field); *len = vec.size(); return &vec[0]; } - uint64_t XGDMatrixNumRow(const void *handle) { + bst_ulong XGDMatrixNumRow(const void *handle) { return static_cast(handle)->info.num_row(); } // xgboost implementation - void *XGBoosterCreate(void *dmats[], uint64_t len) { + void *XGBoosterCreate(void *dmats[], bst_ulong len) { std::vector mats; - for (uint64_t i = 0; i < len; ++i) { + for (bst_ulong i = 0; i < len; ++i) { DataMatrix *dtr = static_cast(dmats[i]); mats.push_back(dtr); } @@ -224,7 +224,7 @@ extern "C"{ bst->UpdateOneIter(iter, *dtr); } void XGBoosterBoostOneIter(void *handle, void *dtrain, - float *grad, float *hess, uint64_t len) { + float *grad, float *hess, bst_ulong len) { Booster *bst = static_cast(handle); DataMatrix *dtr = static_cast(dtrain); bst->CheckInitModel(); @@ -232,11 +232,11 @@ extern "C"{ bst->BoostOneIter(*dtr, grad, hess, len); } const char* XGBoosterEvalOneIter(void *handle, int iter, void *dmats[], - const char *evnames[], uint64_t len) { + const char *evnames[], bst_ulong len) { Booster *bst = static_cast(handle); std::vector names; std::vector mats; - for (uint64_t i = 0; i < len; ++i) { + for (bst_ulong i = 0; i < len; ++i) { mats.push_back(static_cast(dmats[i])); names.push_back(std::string(evnames[i])); } @@ -244,7 +244,7 @@ extern "C"{ bst->eval_str = bst->EvalOneIter(iter, mats, names); return bst->eval_str.c_str(); } - const float *XGBoosterPredict(void *handle, void *dmat, int output_margin, uint64_t *len) { + const float *XGBoosterPredict(void *handle, void *dmat, int output_margin, bst_ulong *len) { return static_cast(handle)->Pred(*static_cast(dmat), output_margin, len); } void XGBoosterLoadModel(void *handle, const char *fname) { @@ -253,7 +253,7 @@ extern "C"{ void XGBoosterSaveModel(const void *handle, const char *fname) { static_cast(handle)->SaveModel(fname); } - const char** XGBoosterDumpModel(void *handle, const char *fmap, uint64_t *len){ + const char** XGBoosterDumpModel(void *handle, const char *fmap, bst_ulong *len){ utils::FeatMap featmap; if (strlen(fmap) != 0) { featmap.LoadText(fmap); diff --git a/wrapper/xgboost_wrapper.h b/wrapper/xgboost_wrapper.h index b0c0052ed..04c1763c2 100644 --- a/wrapper/xgboost_wrapper.h +++ b/wrapper/xgboost_wrapper.h @@ -7,8 +7,9 @@ * can be used to create wrapper of other languages */ #include -#include "../src/utils/utils.h" #define XGB_DLL +// manually define unsign long +typedef unsigned long bst_ulong; extern "C" { /*! @@ -25,11 +26,11 @@ extern "C" { * \param nelem number of nonzero elements in the matrix * \return created dmatrix */ - XGB_DLL void* XGDMatrixCreateFromCSR(const uint64_t *indptr, + XGB_DLL void* XGDMatrixCreateFromCSR(const bst_ulong *indptr, const unsigned *indices, const float *data, - uint64_t nindptr, - uint64_t nelem); + bst_ulong nindptr, + bst_ulong nelem); /*! * \brief create matrix content from dense matrix * \param data pointer to the data space @@ -39,8 +40,8 @@ extern "C" { * \return created dmatrix */ XGB_DLL void* XGDMatrixCreateFromMat(const float *data, - uint64_t nrow, - uint64_t ncol, + bst_ulong nrow, + bst_ulong ncol, float missing); /*! * \brief create a new dmatrix from sliced content of existing matrix @@ -51,7 +52,7 @@ extern "C" { */ XGB_DLL void* XGDMatrixSliceDMatrix(void *handle, const int *idxset, - uint64_t len); + bst_ulong len); /*! * \brief free space in data matrix */ @@ -70,7 +71,7 @@ extern "C" { * \param array pointer to float vector * \param len length of array */ - XGB_DLL void XGDMatrixSetFloatInfo(void *handle, const char *field, const float *array, uint64_t len); + XGB_DLL void XGDMatrixSetFloatInfo(void *handle, const char *field, const float *array, bst_ulong len); /*! * \brief set uint32 vector to a content in info * \param handle a instance of data matrix @@ -78,14 +79,14 @@ extern "C" { * \param array pointer to float vector * \param len length of array */ - XGB_DLL void XGDMatrixSetUIntInfo(void *handle, const char *field, const unsigned *array, uint64_t len); + XGB_DLL void XGDMatrixSetUIntInfo(void *handle, const char *field, const unsigned *array, bst_ulong len); /*! * \brief set label of the training matrix * \param handle a instance of data matrix * \param group pointer to group size * \param len length of array */ - XGB_DLL void XGDMatrixSetGroup(void *handle, const unsigned *group, uint64_t len); + XGB_DLL void XGDMatrixSetGroup(void *handle, const unsigned *group, bst_ulong len); /*! * \brief get float info vector from matrix * \param handle a instance of data matrix @@ -93,7 +94,7 @@ extern "C" { * \param out_len used to set result length * \return pointer to the result */ - XGB_DLL const float* XGDMatrixGetFloatInfo(const void *handle, const char *field, uint64_t* out_len); + XGB_DLL const float* XGDMatrixGetFloatInfo(const void *handle, const char *field, bst_ulong* out_len); /*! * \brief get uint32 info vector from matrix * \param handle a instance of data matrix @@ -101,18 +102,18 @@ extern "C" { * \param out_len used to set result length * \return pointer to the result */ - XGB_DLL const unsigned* XGDMatrixGetUIntInfo(const void *handle, const char *field, uint64_t* out_len); + XGB_DLL const unsigned* XGDMatrixGetUIntInfo(const void *handle, const char *field, bst_ulong* out_len); /*! * \brief return number of rows */ - XGB_DLL uint64_t XGDMatrixNumRow(const void *handle); + XGB_DLL bst_ulong XGDMatrixNumRow(const void *handle); // --- start XGBoost class /*! * \brief create xgboost learner * \param dmats matrices that are set to be cached * \param len length of dmats */ - XGB_DLL void *XGBoosterCreate(void* dmats[], uint64_t len); + XGB_DLL void *XGBoosterCreate(void* dmats[], bst_ulong len); /*! * \brief free obj in handle * \param handle handle to be freed @@ -142,7 +143,7 @@ extern "C" { * \param len length of grad/hess array */ XGB_DLL void XGBoosterBoostOneIter(void *handle, void *dtrain, - float *grad, float *hess, uint64_t len); + float *grad, float *hess, bst_ulong len); /*! * \brief get evaluation statistics for xgboost * \param handle handle @@ -153,7 +154,7 @@ extern "C" { * \return the string containing evaluation stati */ XGB_DLL const char *XGBoosterEvalOneIter(void *handle, int iter, void *dmats[], - const char *evnames[], uint64_t len); + const char *evnames[], bst_ulong len); /*! * \brief make prediction based on dmat * \param handle handle @@ -161,7 +162,7 @@ extern "C" { * \param output_margin whether only output raw margin value * \param len used to store length of returning result */ - XGB_DLL const float *XGBoosterPredict(void *handle, void *dmat, int output_margin, uint64_t *len); + XGB_DLL const float *XGBoosterPredict(void *handle, void *dmat, int output_margin, bst_ulong *len); /*! * \brief load model from existing file * \param handle handle @@ -182,6 +183,6 @@ extern "C" { * \return char *data[], representing dump of each model */ XGB_DLL const char **XGBoosterDumpModel(void *handle, const char *fmap, - uint64_t *out_len); + bst_ulong *out_len); }; #endif // XGBOOST_WRAPPER_H_