Skip to content

Hypergraph partitioning enters OSP #65

Hypergraph partitioning enters OSP

Hypergraph partitioning enters OSP #65

Workflow file for this run

name: OSP CI
on:
push:
branches: ["*"]
jobs:
# -------------------------------------------------
# 1. MULTI-CONFIGURATION BUILD TESTS
# -------------------------------------------------
build_matrix:
name: Build (${{ matrix.build_type }})
runs-on: ubuntu-latest
strategy:
matrix:
build_type: [Debug, RelWithDebInfo, Release, RelWithDebInfo-noEigen]
steps:
- uses: actions/checkout@v3
- name: Install dependencies
if: matrix.build_type != 'RelWithDebInfo-noEigen'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
make gcc g++ git libboost-all-dev \
doxygen graphviz python3-pip libeigen3-dev
pip3 install --upgrade pip
pip3 install cmake==3.21.3
- name: Install dependencies (no Eigen)
if: matrix.build_type == 'RelWithDebInfo-noEigen'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
make gcc g++ git libboost-all-dev \
doxygen graphviz python3-pip
pip3 install --upgrade pip
pip3 install cmake==3.21.3
- name: Configure (${{ matrix.build_type }})
run: |
if [ "${{ matrix.build_type }}" = "RelWithDebInfo-noEigen" ]; then
cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
else
cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
fi
- name: Build (${{ matrix.build_type }})
working-directory: ${{ github.workspace }}/build
run: cmake --build . -j$(nproc)
# -------------------------------------------------
# 2. FULL BUILD + TEST + SIMPLE DAG RUN (with Eigen)
# -------------------------------------------------
test_and_run:
name: Build & Test (RelWithDebInfo + Eigen)
runs-on: ubuntu-latest
needs: build_matrix
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
make gcc g++ git libboost-all-dev \
doxygen graphviz python3-pip libeigen3-dev
pip3 install --upgrade pip
pip3 install cmake==3.21.3
- name: Configure
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON
- name: Build all targets
working-directory: ${{ github.workspace }}/build
run: cmake --build . -j$(nproc)
- name: Run tests
working-directory: ${{ github.workspace }}/build
run: ctest --output-on-failure --output-junit test_results.xml
continue-on-error: true
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: test-results
path: build/test_results.xml
- name: Run osp example
working-directory: ${{ github.workspace }}/build
run: |
./apps/osp \
--inputDag ../data/spaa/tiny/instance_bicgstab.hdag \
--inputMachine ../data/machine_params/p3.arch \
--Serial --GreedyBsp --BspLocking --GrowLocal --Variance --Cilk \
--Etf --GreedyChildren --MultiHC --SarkarLockingHC \
--GreedyChildrenKL --GrowLocalKL --GreedyBspHC --FunnelLocking
# -------------------------------------------------
# 3. FULL BUILD + TEST (NO EIGEN)
# -------------------------------------------------
test_no_eigen:
name: Build & Test (RelWithDebInfo, no Eigen)
runs-on: ubuntu-latest
needs: build_matrix
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
make gcc g++ git libboost-all-dev \
doxygen graphviz python3-pip
pip3 install --upgrade pip
pip3 install cmake==3.21.3
- name: Configure
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON
- name: Build all targets
working-directory: ${{ github.workspace }}/build
run: cmake --build . -j$(nproc)
- name: Run tests
working-directory: ${{ github.workspace }}/build
run: ctest --output-on-failure --output-junit test_results_no_eigen.xml
continue-on-error: true
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: test-results-no-eigen
path: build/test_results_no_eigen.xml
- name: Run osp example
working-directory: ${{ github.workspace }}/build
run: |
./apps/osp \
--inputDag ../data/spaa/tiny/instance_bicgstab.hdag \
--inputMachine ../data/machine_params/p3.arch \
--Serial --GreedyBsp --BspLocking --GrowLocal --Variance --Cilk \
--Etf --GreedyChildren --MultiHC --SarkarLockingHC \
--GreedyChildrenKL --GrowLocalKL --GreedyBspHC --FunnelLocking
# -------------------------------------------------
# 4. BUILD DOCUMENTATION (only on master)
# -------------------------------------------------
docs:
name: Build Docs
runs-on: ubuntu-latest
needs: [test_and_run, test_no_eigen]
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
doxygen graphviz libeigen3-dev cmake g++
- name: Build docs
run: |
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target doc
mkdir -p public
cp -r doc/html/* public
- name: Upload docs artifact
uses: actions/upload-artifact@v4
with:
name: docs
path: public