Skip to content

Commit

Permalink
Add nightly build on GPU-enabled workers
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
luhenry committed Apr 18, 2024
1 parent 910b200 commit 6a1c61f
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 3 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/linux-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ jobs:
VELOX_DEPENDENCY_SOURCE: SYSTEM
simdjson_SOURCE: BUNDLED
xsimd_SOURCE: BUNDLED
CUDA_VERSION: "11.8"
steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -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"
Expand All @@ -109,7 +109,7 @@ jobs:
"-DVELOX_ENABLE_GPU=ON"
)
make release EXTRA_CMAKE_FLAGS="${EXTRA_CMAKE_FLAGS[*]}"
- name: Ccache after
run: ccache -s

Expand Down
109 changes: 109 additions & 0 deletions .github/workflows/linux-nightly-build.yml
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 6a1c61f

Please sign in to comment.