diff --git a/Jenkinsfile-win64 b/Jenkinsfile-win64 index 30fd81119..a66cedb88 100644 --- a/Jenkinsfile-win64 +++ b/Jenkinsfile-win64 @@ -40,7 +40,8 @@ pipeline { steps { script { parallel ([ - 'build-win64-cuda10.1': { BuildWin64() } + 'build-win64-cuda10.1': { BuildWin64() }, + 'build-rpkg-win64-cuda10.1': { BuildRPackageWithCUDAWin64() } ]) } } @@ -115,6 +116,22 @@ def BuildWin64() { } } +def BuildRPackageWithCUDAWin64() { + node('win64 && cuda10_unified') { + unstash name: 'srcs' + bat "nvcc --version" + if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME.startsWith('release')) { + bat """ + bash tests/ci_build/build_r_pkg_with_cuda_win64.sh ${commit_id} + """ + echo 'Uploading R tarball...' + path = ("${BRANCH_NAME}" == 'master') ? '' : "${BRANCH_NAME}/" + s3Upload bucket: 'xgboost-nightly-builds', path: path, acl: 'PublicRead', includePathPattern:'xgboost_r_gpu_win64_*.tar.gz' + } + deleteDir() + } +} + def TestWin64() { node('win64 && cuda10_unified') { unstash name: 'srcs' diff --git a/doc/install.rst b/doc/install.rst index 31635d3a2..31224b6ed 100644 --- a/doc/install.rst +++ b/doc/install.rst @@ -61,9 +61,12 @@ R and then run ``install.packages("xgboost")``. Without OpenMP, XGBoost will only use a single CPU core, leading to suboptimal training speed. -* We also provide **experimental** pre-built binary on Linux x86_64 with GPU support. +* We also provide **experimental** pre-built binary with GPU support. With this binary, + you will be able to use the GPU algorithm without building XGBoost from the source. Download the binary package from the Releases page. The file name will be of the form - ``xgboost_r_gpu_linux_[version].tar.gz``. Then install XGBoost by running: + ``xgboost_r_gpu_[os]_[version].tar.gz``, where ``[os]`` is either ``linux`` or ``win64``. + (We build the binaries for 64-bit Linux and Windows.) + Then install XGBoost by running: .. code-block:: bash @@ -142,9 +145,11 @@ R - Other than standard CRAN installation, we also provide *experimental* pre-built binary on -Linux x86_64 with GPU support. You can go to `this page +with GPU support. You can go to `this page `_, Find the commit -ID you want to install: ``xgboost_r_gpu_linux_[commit].tar.gz``, download it then run: +ID you want to install and then locate the file ``xgboost_r_gpu_[os]_[commit].tar.gz``, +where ``[os]`` is either ``linux`` or ``win64``. (We build the binaries for 64-bit Linux +and Windows.) Download it and run the following commands: .. code-block:: bash diff --git a/tests/ci_build/build_r_pkg_with_cuda_win64.sh b/tests/ci_build/build_r_pkg_with_cuda_win64.sh new file mode 100644 index 000000000..f83795775 --- /dev/null +++ b/tests/ci_build/build_r_pkg_with_cuda_win64.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e +set -x + +if [ "$#" -ne 1 ] +then + echo "Build the R package tarball with CUDA code. Usage: $0 [commit hash]" + exit 1 +fi + +commit_hash="$1" + +MAKE="/c/Rtools/bin/make" /c/Rtools/bin/make Rpack +mv xgboost/ xgboost_rpack/ + +mkdir build +cd build +cmake .. -G"Visual Studio 15 2017 Win64" -DUSE_CUDA=ON -DR_LIB=ON -DLIBR_HOME="c:\\Program Files\\R\\R-3.6.3" +cmake --build . --config Release --parallel +cd .. + +rm xgboost +# This super wacky hack is found in cmake/RPackageInstall.cmake.in and +# cmake/RPackageInstallTargetSetup.cmake. This hack lets us bypass the normal build process of R +# and have R use xgboost.dll that we've already built. +rm -v xgboost_rpack/configure +rm -rfv xgboost_rpack/src +mkdir -p xgboost_rpack/src +cp -v lib/xgboost.dll xgboost_rpack/src/ +echo 'all:' > xgboost_rpack/src/Makefile +echo 'all:' > xgboost_rpack/src/Makefile.win +mv xgboost_rpack/ xgboost/ +/c/Rtools/bin/tar -cvf xgboost_r_gpu_win64_${commit_hash}.tar xgboost/ +/c/Rtools/bin/gzip -9c xgboost_r_gpu_win64_${commit_hash}.tar > xgboost_r_gpu_win64_${commit_hash}.tar.gz \ No newline at end of file