[CI] Automatically build GPU-enabled R package for Windows (#7185)
* [CI] Automatically build GPU-enabled R package for Windows * Update Jenkinsfile-win64 * Build R package for the release branch only * Update install doc
This commit is contained in:
parent
9c64618cb6
commit
3060f0b562
@ -40,7 +40,8 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
parallel ([
|
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() {
|
def TestWin64() {
|
||||||
node('win64 && cuda10_unified') {
|
node('win64 && cuda10_unified') {
|
||||||
unstash name: 'srcs'
|
unstash name: 'srcs'
|
||||||
|
|||||||
@ -61,9 +61,12 @@ R
|
|||||||
and then run ``install.packages("xgboost")``. Without OpenMP, XGBoost will only use a
|
and then run ``install.packages("xgboost")``. Without OpenMP, XGBoost will only use a
|
||||||
single CPU core, leading to suboptimal training speed.
|
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
|
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
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -142,9 +145,11 @@ R
|
|||||||
-
|
-
|
||||||
|
|
||||||
Other than standard CRAN installation, we also provide *experimental* pre-built binary on
|
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
|
||||||
<https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds/list.html>`_, Find the commit
|
<https://s3-us-west-2.amazonaws.com/xgboost-nightly-builds/list.html>`_, 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
|
.. code-block:: bash
|
||||||
|
|
||||||
|
|||||||
34
tests/ci_build/build_r_pkg_with_cuda_win64.sh
Normal file
34
tests/ci_build/build_r_pkg_with_cuda_win64.sh
Normal file
@ -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
|
||||||
Loading…
x
Reference in New Issue
Block a user