From 6a1c61f26e45659fed809767c636f3418d4b5c45 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Thu, 18 Apr 2024 11:05:34 +0000 Subject: [PATCH] Add nightly build on GPU-enabled workers It would be too constraining to build and run on GPU-enabled workers for all pull request and branch pushes. We still want to build the GPU code on all pull requests to reduce the chances of regressions. --- .github/workflows/linux-build.yml | 6 +- .github/workflows/linux-nightly-build.yml | 109 ++++++++++++++++++++++ 2 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/linux-nightly-build.yml diff --git a/.github/workflows/linux-build.yml b/.github/workflows/linux-build.yml index 6c547b35f548..2661194b0be0 100644 --- a/.github/workflows/linux-build.yml +++ b/.github/workflows/linux-build.yml @@ -61,7 +61,6 @@ jobs: VELOX_DEPENDENCY_SOURCE: SYSTEM simdjson_SOURCE: BUNDLED xsimd_SOURCE: BUNDLED - CUDA_VERSION: "11.8" steps: - uses: actions/checkout@v4 @@ -91,7 +90,8 @@ jobs: - name: Make Release Build env: MAKEFLAGS: 'NUM_THREADS=8 MAX_HIGH_MEM_JOBS=4 MAX_LINK_JOBS=4' - CUDA_ARCHITECTURES: 60 + CUDA_VERSION: "11.8" + CUDA_ARCHITECTURES: 75 CUDA_COMPILER: /usr/local/cuda-${CUDA_VERSION}/bin/nvcc # Without that, nvcc picks /usr/bin/c++ which is GCC 8 CUDA_FLAGS: "-ccbin /opt/rh/gcc-toolset-9/root/usr/bin" @@ -109,7 +109,7 @@ jobs: "-DVELOX_ENABLE_GPU=ON" ) make release EXTRA_CMAKE_FLAGS="${EXTRA_CMAKE_FLAGS[*]}" - + - name: Ccache after run: ccache -s diff --git a/.github/workflows/linux-nightly-build.yml b/.github/workflows/linux-nightly-build.yml new file mode 100644 index 000000000000..0b4656c60337 --- /dev/null +++ b/.github/workflows/linux-nightly-build.yml @@ -0,0 +1,109 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Linux Nightly Build + +on: + schedule: + - cron: '0 3 * * *' + + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.repository }}-${{ github.head_ref || github.sha }} + cancel-in-progress: true + +jobs: + adapters: + name: Linux release with adapters + # prevent errors when forks ff their main branch + if: ${{ github.repository == 'facebookincubator/velox' }} + runs-on: 4-core-ubuntu-gpu-t4 + container: ghcr.io/facebookincubator/velox-dev:adapters + defaults: + run: + shell: bash + env: + CCACHE_DIR: "/__w/velox/velox/.ccache" + VELOX_DEPENDENCY_SOURCE: SYSTEM + simdjson_SOURCE: BUNDLED + xsimd_SOURCE: BUNDLED + steps: + - uses: actions/checkout@v4 + + - name: Fix git permissions + # Usually actions/checkout does this but as we run in a container + # it doesn't work + run: git config --global --add safe.directory /__w/velox/velox + + - name: Install Dependencies + run: | + # Allows to install arbitrary cuda-version whithout needing to update + # docker container before. It simplifies testing new/different versions + if ! yum list installed cuda-nvcc-$(echo ${CUDA_VERSION} | tr '.' '-') 1>/dev/null; then + source scripts/setup-centos8.sh + install_cuda ${CUDA_VERSION} + fi + + - uses: assignUser/stash/restore@v1 + with: + path: '${{ env.CCACHE_DIR }}' + key: ccache-linux-adapters + + - name: "Zero Ccache Statistics" + run: | + ccache -sz + + - name: Make Release Build + env: + MAKEFLAGS: 'NUM_THREADS=8 MAX_HIGH_MEM_JOBS=4 MAX_LINK_JOBS=4' + CUDA_VERSION: "11.8" + CUDA_ARCHITECTURES: 75 + CUDA_COMPILER: /usr/local/cuda-${CUDA_VERSION}/bin/nvcc + # Without that, nvcc picks /usr/bin/c++ which is GCC 8 + CUDA_FLAGS: "-ccbin /opt/rh/gcc-toolset-9/root/usr/bin" + run: | + EXTRA_CMAKE_FLAGS=( + "-DVELOX_ENABLE_BENCHMARKS=ON" + "-DVELOX_ENABLE_ARROW=ON" + "-DVELOX_ENABLE_PARQUET=ON" + "-DVELOX_ENABLE_HDFS=ON" + "-DVELOX_ENABLE_S3=ON" + "-DVELOX_ENABLE_GCS=ON" + "-DVELOX_ENABLE_ABFS=ON" + "-DVELOX_ENABLE_SUBSTRAIT=ON" + "-DVELOX_ENABLE_REMOTE_FUNCTIONS=ON" + "-DVELOX_ENABLE_GPU=ON" + ) + make release EXTRA_CMAKE_FLAGS="${EXTRA_CMAKE_FLAGS[*]}" + + - name: Ccache after + run: ccache -s + + - uses: assignUser/stash/save@v1 + with: + path: '${{ env.CCACHE_DIR }}' + key: ccache-linux-adapters + + - name: Run Tests + # Some of the adapters dependencies are in the 'adapters' conda env + shell: mamba run --no-capture-output -n adapters /usr/bin/bash -e {0} + env: + LIBHDFS3_CONF: "/__w/velox/velox/scripts/hdfs-client.xml" + working-directory: _build/release + run: | + ctest -j 8 --output-on-failure --no-tests=error