* Add cupy to Windows CI * Update Jenkinsfile-win64 Co-authored-by: Philip Hyunsu Cho <chohyu01@cs.washington.edu> * Update Jenkinsfile-win64 Co-authored-by: Philip Hyunsu Cho <chohyu01@cs.washington.edu> * Update tests/python-gpu/test_gpu_prediction.py Co-authored-by: Philip Hyunsu Cho <chohyu01@cs.washington.edu> Co-authored-by: Philip Hyunsu Cho <chohyu01@cs.washington.edu>
152 lines
4.6 KiB
Groovy
152 lines
4.6 KiB
Groovy
#!/usr/bin/groovy
|
|
// -*- mode: groovy -*-
|
|
|
|
/* Jenkins pipeline for Windows AMD64 target */
|
|
|
|
import groovy.transform.Field
|
|
|
|
@Field
|
|
def commit_id // necessary to pass a variable from one stage to another
|
|
|
|
pipeline {
|
|
agent none
|
|
// Build stages
|
|
stages {
|
|
stage('Jenkins Win64: Get sources') {
|
|
agent { label 'win64 && build' }
|
|
steps {
|
|
script {
|
|
checkoutSrcs()
|
|
commit_id = "${GIT_COMMIT}"
|
|
}
|
|
stash name: 'srcs'
|
|
milestone ordinal: 1
|
|
}
|
|
}
|
|
stage('Jenkins Win64: Build') {
|
|
agent none
|
|
steps {
|
|
script {
|
|
parallel ([
|
|
'build-win64-cuda10.0': { BuildWin64() }
|
|
])
|
|
}
|
|
milestone ordinal: 2
|
|
}
|
|
}
|
|
stage('Jenkins Win64: Test') {
|
|
agent none
|
|
steps {
|
|
script {
|
|
parallel ([
|
|
'test-win64-cpu': { TestWin64CPU() },
|
|
'test-win64-gpu-cuda10.0': { TestWin64GPU(cuda_target: 'cuda10_0') },
|
|
'test-win64-gpu-cuda10.1': { TestWin64GPU(cuda_target: 'cuda10_1') }
|
|
])
|
|
}
|
|
milestone ordinal: 3
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// check out source code from git
|
|
def checkoutSrcs() {
|
|
retry(5) {
|
|
try {
|
|
timeout(time: 2, unit: 'MINUTES') {
|
|
checkout scm
|
|
sh 'git submodule update --init'
|
|
}
|
|
} catch (exc) {
|
|
deleteDir()
|
|
error "Failed to fetch source codes"
|
|
}
|
|
}
|
|
}
|
|
|
|
def BuildWin64() {
|
|
node('win64 && build && cuda10') {
|
|
unstash name: 'srcs'
|
|
echo "Building XGBoost for Windows AMD64 target..."
|
|
bat "nvcc --version"
|
|
bat """
|
|
mkdir build
|
|
cd build
|
|
cmake .. -G"Visual Studio 15 2017 Win64" -DUSE_CUDA=ON -DCMAKE_VERBOSE_MAKEFILE=ON -DGOOGLE_TEST=ON -DUSE_DMLC_GTEST=ON
|
|
"""
|
|
bat """
|
|
cd build
|
|
"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe" xgboost.sln /m /p:Configuration=Release /nodeReuse:false
|
|
"""
|
|
bat """
|
|
cd python-package
|
|
conda activate && python setup.py bdist_wheel --universal && for /R %%i in (dist\\*.whl) DO python ../tests/ci_build/rename_whl.py "%%i" ${commit_id} win_amd64
|
|
"""
|
|
echo "Insert vcomp140.dll (OpenMP runtime) into the wheel..."
|
|
bat """
|
|
cd python-package\\dist
|
|
COPY /B ..\\..\\tests\\ci_build\\insert_vcomp140.py
|
|
conda activate && python insert_vcomp140.py *.whl
|
|
"""
|
|
echo 'Stashing Python wheel...'
|
|
stash name: 'xgboost_whl', includes: 'python-package/dist/*.whl'
|
|
path = ("${BRANCH_NAME}" == 'master') ? '' : "${BRANCH_NAME}/"
|
|
s3Upload bucket: 'xgboost-nightly-builds', path: path, acl: 'PublicRead', workingDir: 'python-package/dist', includePathPattern:'**/*.whl'
|
|
echo 'Stashing C++ test executable (testxgboost)...'
|
|
stash name: 'xgboost_cpp_tests', includes: 'build/testxgboost.exe'
|
|
stash name: 'xgboost_cli', includes: 'xgboost.exe'
|
|
deleteDir()
|
|
}
|
|
}
|
|
|
|
def TestWin64CPU() {
|
|
node('win64 && cpu') {
|
|
unstash name: 'srcs'
|
|
unstash name: 'xgboost_whl'
|
|
unstash name: 'xgboost_cli'
|
|
echo "Test Win64 CPU"
|
|
echo "Installing Python wheel..."
|
|
bat "conda activate && (python -m pip uninstall -y xgboost || cd .)"
|
|
bat """
|
|
conda activate && for /R %%i in (python-package\\dist\\*.whl) DO python -m pip install "%%i"
|
|
"""
|
|
echo "Installing Python dependencies..."
|
|
bat """
|
|
conda activate && conda install -y hypothesis && conda upgrade scikit-learn pandas numpy hypothesis
|
|
"""
|
|
echo "Running Python tests..."
|
|
bat "conda activate && python -m pytest -v -s --fulltrace tests\\python"
|
|
bat "conda activate && python -m pip uninstall -y xgboost"
|
|
deleteDir()
|
|
}
|
|
}
|
|
|
|
def TestWin64GPU(args) {
|
|
node("win64 && gpu && ${args.cuda_target}") {
|
|
unstash name: 'srcs'
|
|
unstash name: 'xgboost_whl'
|
|
unstash name: 'xgboost_cpp_tests'
|
|
echo "Test Win64 GPU (${args.cuda_target})"
|
|
bat "nvcc --version"
|
|
echo "Running C++ tests..."
|
|
bat "build\\testxgboost.exe"
|
|
echo "Installing Python wheel..."
|
|
bat "conda activate && (python -m pip uninstall -y xgboost || cd .)"
|
|
bat """
|
|
conda activate && for /R %%i in (python-package\\dist\\*.whl) DO python -m pip install "%%i"
|
|
"""
|
|
echo "Installing Python dependencies..."
|
|
def cuda_short_ver = args.cuda_target.replaceAll('_', '')
|
|
bat """
|
|
conda activate && conda install -y hypothesis && conda upgrade scikit-learn pandas numpy hypothesis && python -m pip install cupy-${cuda_short_ver}
|
|
"""
|
|
echo "Running Python tests..."
|
|
bat """
|
|
conda activate && python -m pytest -v -s --fulltrace -m "(not slow) and (not mgpu)" tests\\python-gpu
|
|
"""
|
|
bat "conda activate && python -m pip uninstall -y xgboost"
|
|
deleteDir()
|
|
}
|
|
}
|