diff --git a/.jenkins b/.jenkins index 67491f174cb..c6f60f1a1e6 100644 --- a/.jenkins +++ b/.jenkins @@ -1,121 +1,16 @@ pipeline { agent none - environment { - CCACHE_DIR = '/tmp/ccache' - CCACHE_MAXSIZE = '10G' - CCACHE_CPP2 = 'true' - } stages { stage('Build') { parallel { - stage('CUDA-9.2-Clang') { - agent { - dockerfile { - filename 'Dockerfile.clang' - dir 'scripts/docker' - additionalBuildArgs '--pull' - label 'nvidia-docker && volta' - args '-v /tmp/ccache.kokkos:/tmp/ccache' - } - } - steps { - sh 'ccache --zero-stats' - sh '''rm -rf build && mkdir -p build && cd build && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER=clang++ \ - -DCMAKE_CXX_FLAGS=-Werror \ - -DKokkos_ENABLE_COMPILER_WARNINGS=ON \ - -DKokkos_ENABLE_TESTS=ON \ - -DKokkos_ENABLE_CUDA=ON \ - -DKokkos_ENABLE_CUDA_LAMBDA=ON \ - -DKokkos_ARCH_VOLTA70=ON \ - .. && \ - make -j8 && ctest --output-on-failure''' - } - post { - always { - sh 'ccache --show-stats' - } - } - } - stage('CUDA-9.2-NVCC') { - agent { - dockerfile { - filename 'Dockerfile.nvcc' - dir 'scripts/docker' - additionalBuildArgs '--pull --build-arg BASE=nvidia/cuda:9.2-devel' - label 'nvidia-docker && volta' - args '-v /tmp/ccache.kokkos:/tmp/ccache' - } - } - steps { - sh 'ccache --zero-stats' - sh '''rm -rf build && mkdir -p build && cd build && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER=$WORKSPACE/bin/nvcc_wrapper \ - -DCMAKE_CXX_FLAGS=-Werror \ - -DKokkos_ENABLE_COMPILER_WARNINGS=ON \ - -DKokkos_ENABLE_TESTS=ON \ - -DKokkos_ENABLE_CUDA=ON \ - -DKokkos_ENABLE_CUDA_LAMBDA=ON \ - -DKokkos_ARCH_VOLTA70=ON \ - .. && \ - make -j8 && ctest --output-on-failure''' - } - post { - always { - sh 'ccache --show-stats' - } - } - } - stage('CUDA-10.1-NVCC-RDC') { + stage('HIP') { agent { dockerfile { - filename 'Dockerfile.nvcc' + filename 'Dockerfile.hip' dir 'scripts/docker' - additionalBuildArgs '--pull --build-arg BASE=nvidia/cuda:10.1-devel' + additionalBuildArgs '--pull --build-arg HIP_VERSION=roc-2.9.0' label 'nvidia-docker && volta' - args '-v /tmp/ccache.kokkos:/tmp/ccache' - } - } - steps { - sh 'ccache --zero-stats' - sh '''rm -rf build && mkdir -p build && cd build && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER=$WORKSPACE/bin/nvcc_wrapper \ - -DCMAKE_CXX_FLAGS=-Werror \ - -DKokkos_ENABLE_COMPILER_WARNINGS=ON \ - -DKokkos_ENABLE_TESTS=ON \ - -DKokkos_ENABLE_OPENMP=ON \ - -DKokkos_ENABLE_CUDA=ON \ - -DKokkos_ENABLE_CUDA_LAMBDA=ON \ - -DKokkos_ENABLE_CUDA_UVM=ON \ - -DKokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE=ON \ - -DKokkos_ARCH_VOLTA70=ON \ - .. && \ - make -j8 && ctest --output-on-failure''' - } - post { - always { - sh 'ccache --show-stats' - } - } - } - stage('CUDA-10.1-NVCC-DEBUG') { - agent { - dockerfile { - filename 'Dockerfile.nvcc' - dir 'scripts/docker' - additionalBuildArgs '--pull --build-arg BASE=nvidia/cuda:10.1-devel --build-arg CMAKE_VERSION=3.15.5' - label 'nvidia-docker && volta' - args '-v /tmp/ccache.kokkos:/tmp/ccache' } } steps { @@ -123,50 +18,17 @@ pipeline { sh '''rm -rf build && mkdir -p build && cd build && \ cmake \ -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER=$WORKSPACE/bin/nvcc_wrapper \ + -DCMAKE_CXX_COMPILER=/opt/rocm/hip/hipcc \ -DCMAKE_CXX_FLAGS=-Werror \ -DKokkos_ENABLE_COMPILER_WARNINGS=ON \ -DKokkos_ENABLE_DEBUG=ON \ -DKokkos_ENABLE_DEBUG_BOUNDS_CHECK=ON \ -DKokkos_ENABLE_TESTS=ON \ - -DKokkos_ENABLE_CUDA=ON \ - -DKokkos_ENABLE_CUDA_LAMBDA=ON \ + -DKokkos_ENABLE_HIP=ON \ -DKokkos_ARCH_VOLTA70=ON \ .. && \ make -j8 && ctest --output-on-failure''' } - post { - always { - sh 'ccache --show-stats' - } - } - } - stage('GCC-4.8.4') { - agent { - dockerfile { - filename 'Dockerfile.gcc' - dir 'scripts/docker' - additionalBuildArgs '--pull' - label 'docker' - } - } - environment { - OMP_NUM_THREADS = 8 - OMP_PLACES = 'threads' - OMP_PROC_BIND = 'spread' - } - steps { - sh '''rm -rf build && mkdir -p build && cd build && \ - cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS=-Werror \ - -DKokkos_ENABLE_COMPILER_WARNINGS=ON \ - -DKokkos_ENABLE_TESTS=ON \ - -DKokkos_ENABLE_OPENMP=ON \ - .. && \ - make -j8 && ctest --output-on-failure''' - } } stage('Clang-Format') { agent { diff --git a/scripts/docker/Dockerfile.hip b/scripts/docker/Dockerfile.hip new file mode 100644 index 00000000000..bb1867a6a3c --- /dev/null +++ b/scripts/docker/Dockerfile.hip @@ -0,0 +1,26 @@ +ARG BASE=nvidia/cuda:10.1-devel +FROM $BASE + +RUN DEBIAN_FRONTEND=noninteractive && \ + apt-get update && apt-get upgrade -y && apt-get install -y \ + bc \ + cmake \ + git \ + wget \ + ccache \ + libelf-dev \ + && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +# Install HIP +ARG HIP_VERSION=roc-2.6.0 +ENV PATH=/opt/rocm/hip/bin:$PATH +RUN HIP_URL=https://github.com/ROCm-Developer-Tools/HIP/archive/${HIP_VERSION}.tar.gz && \ + mkdir /scratch && cd /scratch && \ + wget --quiet ${HIP_URL} --output-document=HIP.tar.gz && \ + mkdir HIP && tar -xf HIP.tar.gz -C HIP --strip-components=1 && \ + cd HIP && \ + mkdir build && cd build && \ + cmake -DCMAKE_BUILD_TYPE=Release .. && make && make install && \ + rm -r /scratch && \ + hipconfig --full