Skip to content

Use CUDA native functions in math namespace #5782

Use CUDA native functions in math namespace

Use CUDA native functions in math namespace #5782

Workflow file for this run

name: Builds
on:
push:
pull_request:
branches:
- main
# Cancel existing jobs on new pushes.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
# All the different build/test jobs.
jobs:
# Native build jobs.
native:
# The different build modes to test.
strategy:
matrix:
BUILD_TYPE: ["Debug"]
PLATFORM:
- OS: "ubuntu-latest"
GENERATOR: "Unix Makefiles"
- OS: "macos-latest"
GENERATOR: "Xcode"
# The system to run on.
runs-on: ${{ matrix.PLATFORM.OS }}
name: "native (${{ matrix.PLATFORM.OS }})"
# The build/test steps to execute.
steps:
# Use a standard checkout of the code.
- uses: actions/checkout@v4
# Run the CMake configuration.
- name: Configure
run: cmake --preset full-fp64
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }}
-DDETRAY_FAIL_ON_WARNINGS=ON
-S ${{ github.workspace }} -B build
-G "${{ matrix.PLATFORM.GENERATOR }}"
# Perform the build.
- name: Build
run: cmake --build build --config ${{ matrix.BUILD_TYPE }} -- -j 2
# Containerised build jobs.
host-container:
# The different build modes to test.
strategy:
matrix:
BUILD_TYPE: ["Release", "Debug"]
SCALAR_TYPE: ["float", "double"]
PLATFORM:
- NAME: "HOST"
CXX_STANDARD: "20"
CONTAINER: "ghcr.io/acts-project/ubuntu2404:56"
OPTIONS: -DDETRAY_EIGEN_PLUGIN=ON -DDETRAY_SMATRIX_PLUGIN=ON -DDETRAY_VC_AOS_PLUGIN=ON -DDETRAY_VC_SOA_PLUGIN=ON
# The system to run on.
runs-on: ubuntu-latest
container: ${{ matrix.PLATFORM.CONTAINER }}
name: "host-container (${{ matrix.PLATFORM.NAME }}, C++${{ matrix.PLATFORM.CXX_STANDARD }})"
# Use BASH as the shell from the image.
defaults:
run:
shell: bash
# Set the path to the test data files
env:
DETRAY_DATA_DIRECTORY: ${{ github.workspace }}/data/
DETRAY_BFIELD_FILE: ${{ github.workspace }}/data/odd-bfield_v0_9_0.cvf
# The build/test steps to execute.
steps:
# Use a standard checkout of the code.
- uses: actions/checkout@v4
# Get the data files for the tests
- name: Download data files
run: data/detray_data_get_files.sh
# Run the CMake configuration.
- name: Configure
run: |
source ${GITHUB_WORKSPACE}/.github/ci_setup.sh ${{ matrix.PLATFORM.NAME }}
cmake --preset full-fp32 \
-DCMAKE_CXX_STANDARD=${{ matrix.PLATFORM.CXX_STANDARD }} \
-DDETRAY_BUILD_BENCHMARKS=OFF \
-DDETRAY_FAIL_ON_WARNINGS=ON \
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \
-DDETRAY_CUSTOM_SCALARTYPE=${{ matrix.SCALAR_TYPE }} \
${{ matrix.PLATFORM.OPTIONS }} \
-S ${GITHUB_WORKSPACE} \
-B build
# Perform the build.
- name: Build
run: |
source ${GITHUB_WORKSPACE}/.github/ci_setup.sh ${{ matrix.PLATFORM.NAME }}
cmake --build build -- -j $(nproc)
# Run the unit test(s).
- name: Full Test
if: "matrix.BUILD_TYPE == 'Release'"
run: |
cd build
source ${GITHUB_WORKSPACE}/.github/ci_setup.sh ${{ matrix.PLATFORM.NAME }}
ctest --output-on-failure
- name: Unit Tests
if: "matrix.BUILD_TYPE == 'Debug'"
run: |
cd build
source ${GITHUB_WORKSPACE}/.github/ci_setup.sh ${{ matrix.PLATFORM.NAME }}
ctest -R detray_unit_test_. -E ._eigen --output-on-failure
# Containerised build jobs.
device-container:
# The different build modes to test.
strategy:
matrix:
BUILD_TYPE: ["Debug"]
SCALAR_TYPE: ["float", "double"]
PLATFORM:
- NAME: "CUDA"
CXX_STANDARD: "20"
CONTAINER: "ghcr.io/acts-project/ubuntu2404_cuda:56"
OPTIONS: -DDETRAY_BUILD_CUDA=ON -DDETRAY_EIGEN_PLUGIN=ON -DDETRAY_SMATRIX_PLUGIN=OFF -DDETRAY_VC_AOS_PLUGIN=OFF -DDETRAY_VC_SOA_PLUGIN=OFF
- NAME: "SYCL"
CXX_STANDARD: "20"
CONTAINER: "ghcr.io/acts-project/ubuntu2404_oneapi:56"
OPTIONS: -DDETRAY_BUILD_CUDA=OFF -DDETRAY_BUILD_SYCL=ON -DDETRAY_EIGEN_PLUGIN=ON -DDETRAY_SMATRIX_PLUGIN=OFF -DDETRAY_VC_AOS_PLUGIN=OFF -DDETRAY_VC_SOA_PLUGIN=OFF
# The system to run on.
runs-on: ubuntu-latest
container: ${{ matrix.PLATFORM.CONTAINER }}
name: "device-container (${{ matrix.PLATFORM.NAME }}, C++${{ matrix.PLATFORM.CXX_STANDARD }})"
# Use BASH as the shell from the image.
defaults:
run:
shell: bash
# The build/test steps to execute.
steps:
# Use a standard checkout of the code.
- uses: actions/checkout@v4
# Run the CMake configuration.
- name: Configure
run: |
source ${GITHUB_WORKSPACE}/.github/ci_setup.sh ${{ matrix.PLATFORM.NAME }}
cmake --preset full-fp32 \
-DCMAKE_CXX_STANDARD=${{ matrix.PLATFORM.CXX_STANDARD }} \
-DCMAKE_CUDA_STANDARD=${{ matrix.PLATFORM.CXX_STANDARD }} \
-DCMAKE_SYCL_STANDARD=${{ matrix.PLATFORM.CXX_STANDARD }} \
-DDETRAY_BUILD_HOST=OFF \
-DDETRAY_FAIL_ON_WARNINGS=ON \
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \
-DDETRAY_CUSTOM_SCALARTYPE=${{ matrix.SCALAR_TYPE }} \
${{ matrix.PLATFORM.OPTIONS }} \
-S ${GITHUB_WORKSPACE} \
-B build
# Perform the build.
- name: Build
run: |
source ${GITHUB_WORKSPACE}/.github/ci_setup.sh ${{ matrix.PLATFORM.NAME }}
cmake --build build
- name: FP64 Compliance
if: "matrix.PLATFORM.NAME == 'CUDA' && matrix.BUILD_TYPE == 'Debug' && matrix.SCALAR_TYPE == 'float'"
continue-on-error: true
run: ${GITHUB_WORKSPACE}/.github/find_f64_ptx.py --source ${GITHUB_WORKSPACE} --build build $(find build -name "*.ptx" ! -name "container_cuda_kernel.ptx")
benchmark-build:
# The system to run on.
runs-on: ubuntu-latest
container: ghcr.io/acts-project/ubuntu2204_cuda:56
name: "gitlab-benchmark"
# Use BASH as the shell from the image.
defaults:
run:
shell: bash
# The build/test steps to execute.
steps:
# Use a standard checkout of the code.
- uses: actions/checkout@v4
# Run the CMake configuration.
- name: Configure
run: |
source ${GITHUB_WORKSPACE}/.github/ci_setup.sh CUDA
cmake --preset gitlab-benchmark \
-S ${GITHUB_WORKSPACE} \
-B build
# Perform the build.
- name: Build
run: |
source ${GITHUB_WORKSPACE}/.github/ci_setup.sh CUDA
cmake --build build