From a78db2c53a278af8757bf1b3afadb59bbbe6a3c2 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sat, 22 Nov 2025 15:02:08 +0800 Subject: [PATCH 1/9] cap threads. --- R-package/R/utils.R | 1 + R-package/R/xgb.Booster.R | 1 + R-package/man/a-compatibility-note-for-saveRDS-save.Rd | 1 + R-package/man/predict.xgb.Booster.Rd | 1 + 4 files changed, 4 insertions(+) diff --git a/R-package/R/utils.R b/R-package/R/utils.R index 8a874cac5b68..17fe6f65e900 100644 --- a/R-package/R/utils.R +++ b/R-package/R/utils.R @@ -482,6 +482,7 @@ xgb.createFolds <- function(y, k) { #' \url{https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html}. #' #' @examples +#' \dontshow{RhpcBLASctl::omp_set_num_threads(1)} #' data(agaricus.train, package = "xgboost") #' #' bst <- xgb.train( diff --git a/R-package/R/xgb.Booster.R b/R-package/R/xgb.Booster.R index 19a197a5b3b3..ebc4a9bb61f8 100644 --- a/R-package/R/xgb.Booster.R +++ b/R-package/R/xgb.Booster.R @@ -252,6 +252,7 @@ xgb.get.handle <- function(object) { #' \url{https://arxiv.org/abs/1706.06060} #' #' @examples +#' \dontshow{RhpcBLASctl::omp_set_num_threads(1)} #' ## binary classification: #' #' data(agaricus.train, package = "xgboost") diff --git a/R-package/man/a-compatibility-note-for-saveRDS-save.Rd b/R-package/man/a-compatibility-note-for-saveRDS-save.Rd index fc0a8ff322a0..b14a4a4ac5c4 100644 --- a/R-package/man/a-compatibility-note-for-saveRDS-save.Rd +++ b/R-package/man/a-compatibility-note-for-saveRDS-save.Rd @@ -77,6 +77,7 @@ For more details and explanation about model persistence and archival, consult t \url{https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html}. } \examples{ +\dontshow{RhpcBLASctl::omp_set_num_threads(1)} data(agaricus.train, package = "xgboost") bst <- xgb.train( diff --git a/R-package/man/predict.xgb.Booster.Rd b/R-package/man/predict.xgb.Booster.Rd index 1cc2444cdda7..a374acd6eb3b 100644 --- a/R-package/man/predict.xgb.Booster.Rd +++ b/R-package/man/predict.xgb.Booster.Rd @@ -211,6 +211,7 @@ If you want to change their number, assign a new number to \code{nthread} using Note that converting a matrix to \code{\link[=xgb.DMatrix]{xgb.DMatrix()}} uses multiple threads too. } \examples{ +\dontshow{RhpcBLASctl::omp_set_num_threads(1)} ## binary classification: data(agaricus.train, package = "xgboost") From 9fd116dd55986db675466dbc94c97563eeaad91f Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sat, 22 Nov 2025 15:22:47 +0800 Subject: [PATCH 2/9] Handle directory. --- src/data/sparse_page_source.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/data/sparse_page_source.cc b/src/data/sparse_page_source.cc index 5dcaa1b11945..a31bb48245bf 100644 --- a/src/data/sparse_page_source.cc +++ b/src/data/sparse_page_source.cc @@ -31,7 +31,13 @@ void TryDeleteCacheFile(const std::string& file) { } std::string MakeCachePrefix(std::string cache_prefix) { - cache_prefix = cache_prefix.empty() ? "DMatrix" : cache_prefix; + std::string_view constexpr kDftname{"DMatrix"}; + cache_prefix = cache_prefix.empty() ? kDftname : cache_prefix; + // Use the directory if one exists + if (std::filesystem::is_directory(cache_prefix)) { + cache_prefix = std::filesystem::path{cache_prefix} / kDftname; + } + // Avoid conflicts in distributed environments. if (collective::IsDistributed()) { cache_prefix += ("-r" + std::to_string(collective::GetRank())); } From 16b7675c8ad587df32e2e635e24453fbe3eda0c9 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sat, 22 Nov 2025 15:27:17 +0800 Subject: [PATCH 3/9] lint. --- src/data/sparse_page_source.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/data/sparse_page_source.cc b/src/data/sparse_page_source.cc index a31bb48245bf..fc55eeabf1ef 100644 --- a/src/data/sparse_page_source.cc +++ b/src/data/sparse_page_source.cc @@ -1,12 +1,13 @@ /** - * Copyright 2021-2024, XGBoost Contributors + * Copyright 2021-2025, XGBoost Contributors */ #include "sparse_page_source.h" -#include // for remove -#include // for exists -#include // for partial_sum -#include // for string +#include // for remove +#include // for exists, path, is_directory +#include // for partial_sum +#include // for string +#include // for string_view #include "../collective/communicator-inl.h" // for IsDistributed, GetRank From 43afdb8299b2d20bb7ab363c9f4f2551c0f95d04 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sat, 22 Nov 2025 15:42:26 +0800 Subject: [PATCH 4/9] Move the config file. --- R-package/configure | 4 ++-- R-package/configure.ac | 2 +- R-package/{ => src}/config.h.in | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename R-package/{ => src}/config.h.in (96%) diff --git a/R-package/configure b/R-package/configure index cb54bc2bebdb..b1d727c6a869 100755 --- a/R-package/configure +++ b/R-package/configure @@ -3353,7 +3353,7 @@ fi ac_config_files="$ac_config_files src/Makevars" -ac_config_headers="$ac_config_headers config.h" +ac_config_headers="$ac_config_headers src/config.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -4041,7 +4041,7 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in "src/Makevars") CONFIG_FILES="$CONFIG_FILES src/Makevars" ;; - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff --git a/R-package/configure.ac b/R-package/configure.ac index 68369c9275f5..6924308d62e3 100644 --- a/R-package/configure.ac +++ b/R-package/configure.ac @@ -122,5 +122,5 @@ AC_SUBST(BACKTRACE_LIB) AC_SUBST(XGBOOST_BUILTIN_PREFETCH_PRESENT) AC_SUBST(XGBOOST_MM_PREFETCH_PRESENT) AC_CONFIG_FILES([src/Makevars]) -AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_HEADERS([src/config.h]) AC_OUTPUT diff --git a/R-package/config.h.in b/R-package/src/config.h.in similarity index 96% rename from R-package/config.h.in rename to R-package/src/config.h.in index c503fc9044a4..f3327bc38c5c 100644 --- a/R-package/config.h.in +++ b/R-package/src/config.h.in @@ -1,4 +1,4 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ +/* src/config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD From deffe5d4375cc5881cc244f2899643ed3e073780 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sat, 22 Nov 2025 15:43:52 +0800 Subject: [PATCH 5/9] cpplint. --- src/data/sparse_page_source.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/sparse_page_source.cc b/src/data/sparse_page_source.cc index fc55eeabf1ef..0581859dabec 100644 --- a/src/data/sparse_page_source.cc +++ b/src/data/sparse_page_source.cc @@ -36,7 +36,7 @@ std::string MakeCachePrefix(std::string cache_prefix) { cache_prefix = cache_prefix.empty() ? kDftname : cache_prefix; // Use the directory if one exists if (std::filesystem::is_directory(cache_prefix)) { - cache_prefix = std::filesystem::path{cache_prefix} / kDftname; + cache_prefix = std::filesystem::path{cache_prefix} / kDftname; // NOLINT } // Avoid conflicts in distributed environments. if (collective::IsDistributed()) { From 4ed5ab9afe61304090303f6669157bcae2001737 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sat, 22 Nov 2025 15:49:13 +0800 Subject: [PATCH 6/9] Fix gtest. --- tests/cpp/helpers.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/cpp/helpers.cc b/tests/cpp/helpers.cc index 83e0c17c4819..cd79ca66c589 100644 --- a/tests/cpp/helpers.cc +++ b/tests/cpp/helpers.cc @@ -492,9 +492,10 @@ void MakeLabels(DeviceOrd device, bst_idx_t n_samples, bst_target_t n_classes, std::shared_ptr p_fmat{ DMatrix::Create(static_cast(iter.get()), iter->Proxy(), Reset, Next, config)}; - auto row_page_path = - data::MakeId(prefix, dynamic_cast(p_fmat.get())) + ".row.page"; - EXPECT_TRUE(FileExists(row_page_path)) << row_page_path; + auto row_page_path = data::MakeId(data::MakeCachePrefix(prefix), + dynamic_cast(p_fmat.get())) + + ".row.page"; + EXPECT_TRUE(FileExists(row_page_path)) << row_page_path << " prefix:" << prefix; // Loop over the batches and count the number of pages std::size_t batch_count = 0; From e139cbfa7fe6ef586922618e9eab1590653fc821 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sat, 22 Nov 2025 16:17:45 +0800 Subject: [PATCH 7/9] Windows. --- src/data/sparse_page_source.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/sparse_page_source.cc b/src/data/sparse_page_source.cc index 0581859dabec..50c48949f1a4 100644 --- a/src/data/sparse_page_source.cc +++ b/src/data/sparse_page_source.cc @@ -36,7 +36,7 @@ std::string MakeCachePrefix(std::string cache_prefix) { cache_prefix = cache_prefix.empty() ? kDftname : cache_prefix; // Use the directory if one exists if (std::filesystem::is_directory(cache_prefix)) { - cache_prefix = std::filesystem::path{cache_prefix} / kDftname; // NOLINT + cache_prefix = (std::filesystem::path{cache_prefix} / kDftname).string(); // NOLINT } // Avoid conflicts in distributed environments. if (collective::IsDistributed()) { From c3ec8b5caa15c63156d37a1aa5385a13bc7a2270 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sat, 22 Nov 2025 17:30:31 +0800 Subject: [PATCH 8/9] Remove the bootstrap script. --- ops/script/test_r_package.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ops/script/test_r_package.py b/ops/script/test_r_package.py index ed0d6b1d9faa..0e87000ac2ee 100644 --- a/ops/script/test_r_package.py +++ b/ops/script/test_r_package.py @@ -48,6 +48,7 @@ def pkgroot(path: str) -> None: ) shutil.copytree("R-package", dest) + os.remove(dest / "bootstrap.R") # core shutil.copytree("src", dest / "src" / "src") shutil.copytree("include", dest / "src" / "include") From 36e49bd2f12f3659abc29d65748a70faa721434e Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Sun, 23 Nov 2025 03:06:14 +0800 Subject: [PATCH 9/9] void. --- R-package/src/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R-package/src/init.c b/R-package/src/init.c index fb40933ccb5b..ecff3e71da1c 100644 --- a/R-package/src/init.c +++ b/R-package/src/init.c @@ -58,14 +58,14 @@ extern SEXP XGDMatrixCreateFromDF_R(SEXP, SEXP, SEXP); extern SEXP XGDMatrixGetStrFeatureInfo_R(SEXP, SEXP); extern SEXP XGDMatrixNumCol_R(SEXP); extern SEXP XGDMatrixNumRow_R(SEXP); -extern SEXP XGProxyDMatrixCreate_R(); +extern SEXP XGProxyDMatrixCreate_R(void); extern SEXP XGProxyDMatrixSetDataDense_R(SEXP, SEXP); extern SEXP XGProxyDMatrixSetDataCSR_R(SEXP, SEXP); extern SEXP XGProxyDMatrixSetDataColumnar_R(SEXP, SEXP); extern SEXP XGDMatrixCreateFromCallback_R(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP XGQuantileDMatrixCreateFromCallback_R(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); extern SEXP XGDMatrixFree_R(SEXP); -extern SEXP XGGetRNAIntAsDouble(); +extern SEXP XGGetRNAIntAsDouble(void); extern SEXP XGDMatrixGetQuantileCut_R(SEXP); extern SEXP XGDMatrixNumNonMissing_R(SEXP); extern SEXP XGDMatrixGetDataAsCSR_R(SEXP);