Skip to content

Add csv interface

Add csv interface #7

Workflow file for this run

name: CI
on:
push:
branches: ["main"]
pull_request:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
asan:
name: Tests (ASAN+UBSAN)
runs-on: ubuntu-24.04
env:
FETCHCONTENT_BASE_DIR: ${{ github.workspace }}/.fetchcontent/asan
CCACHE_DIR: ${{ github.workspace }}/.ccache/asan
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y ninja-build cmake clang ccache
- name: Cache FetchContent (asan)
uses: actions/cache@v4
with:
path: .fetchcontent/asan
key: fetchcontent-${{ runner.os }}-asan-${{ hashFiles('cmake/deps.cmake', 'CMakeLists.txt') }}
restore-keys: |
fetchcontent-${{ runner.os }}-asan-
- name: Cache ccache (asan)
uses: actions/cache@v4
with:
path: .ccache/asan
key: ccache-${{ runner.os }}-asan-${{ github.sha }}
restore-keys: |
ccache-${{ runner.os }}-asan-
- name: Configure (Debug, ASAN+UBSAN)
run: |
cmake -S . -B build-asan -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DFETCHCONTENT_BASE_DIR="${FETCHCONTENT_BASE_DIR}" \
-DCOLUMNAR_BUILD_TESTS=ON \
-DCOLUMNAR_BUILD_BENCHMARKS=OFF \
-DCMAKE_C_FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer" \
-DCMAKE_CXX_FLAGS="-fsanitize=address,undefined -fno-omit-frame-pointer"
- name: Build
run: cmake --build build-asan
- name: Run tests
run: ctest --test-dir build-asan --output-on-failure
tsan:
name: Tests (TSAN)
runs-on: ubuntu-24.04
env:
FETCHCONTENT_BASE_DIR: ${{ github.workspace }}/.fetchcontent/tsan
CCACHE_DIR: ${{ github.workspace }}/.ccache/tsan
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y ninja-build cmake clang ccache
- name: Cache FetchContent (tsan)
uses: actions/cache@v4
with:
path: .fetchcontent/tsan
key: fetchcontent-${{ runner.os }}-tsan-${{ hashFiles('cmake/deps.cmake', 'CMakeLists.txt') }}
restore-keys: |
fetchcontent-${{ runner.os }}-tsan-
- name: Cache ccache (tsan)
uses: actions/cache@v4
with:
path: .ccache/tsan
key: ccache-${{ runner.os }}-tsan-${{ github.sha }}
restore-keys: |
ccache-${{ runner.os }}-tsan-
- name: Configure (Debug, TSAN)
run: |
cmake -S . -B build-tsan -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DFETCHCONTENT_BASE_DIR="${FETCHCONTENT_BASE_DIR}" \
-DCOLUMNAR_BUILD_TESTS=ON \
-DCOLUMNAR_BUILD_BENCHMARKS=OFF \
-DCMAKE_C_FLAGS="-fsanitize=thread -fno-omit-frame-pointer" \
-DCMAKE_CXX_FLAGS="-fsanitize=thread -fno-omit-frame-pointer"
- name: Build
run: cmake --build build-tsan
- name: Run tests
env:
TSAN_OPTIONS: "halt_on_error=1"
run: ctest --test-dir build-tsan --output-on-failure
release-bench:
name: Benchmark (Release)
runs-on: ubuntu-24.04
needs: [asan, tsan]
env:
FETCHCONTENT_BASE_DIR: ${{ github.workspace }}/.fetchcontent/release
CCACHE_DIR: ${{ github.workspace }}/.ccache/release
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y ninja-build cmake g++ ccache
- name: Cache FetchContent (release)
uses: actions/cache@v4
with:
path: .fetchcontent/release
key: fetchcontent-${{ runner.os }}-release-${{ hashFiles('cmake/deps.cmake', 'CMakeLists.txt') }}
restore-keys: |
fetchcontent-${{ runner.os }}-release-
- name: Cache ccache (release)
uses: actions/cache@v4
with:
path: .ccache/release
key: ccache-${{ runner.os }}-release-${{ github.sha }}
restore-keys: |
ccache-${{ runner.os }}-release-
- name: Configure (Release)
run: |
cmake -S . -B build-release -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DFETCHCONTENT_BASE_DIR="${FETCHCONTENT_BASE_DIR}" \
-DCOLUMNAR_BUILD_TESTS=OFF \
-DCOLUMNAR_BUILD_BENCHMARKS=ON
- name: Build
run: cmake --build build-release
- name: Run all benchmarks
run: |
chmod +x tools/run_benchmarks.sh
tools/run_benchmarks.sh build-release