Skip to content

OpenVX 1.3.2 - Release updates (#73) #20

OpenVX 1.3.2 - Release updates (#73)

OpenVX 1.3.2 - Release updates (#73) #20

Workflow file for this run

name: OpenVX Conformance Tests
# Two-stage pipeline modelled on the rustVX CI:
# Stage 1 (build) -- build the sample implementation once (Debug + Release,
# full feature set) and build the Conformance Test Suite
# against the Debug build. Both build jobs must pass. The
# Debug build + CTS binary + test data are uploaded as a
# single self-contained artifact.
# Stage 2 (test) -- many granular jobs, each downloads the artifact and runs
# one filtered slice of the conformance suite. No rebuilds.
# Runs on pull requests and on every branch.
on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
env:
OPENVX_DIR: ${{ github.workspace }}/install/Linux/x64/Debug
VX_TEST_DATA_PATH: ${{ github.workspace }}/cts/test_data/
# Full feature set built into a single library so one build serves every test.
OPENVX_FEATURES: >-
-DOPENVX_CONFORMANCE_VISION=ON
-DOPENVX_USE_ENHANCED_VISION=ON
-DOPENVX_CONFORMANCE_NEURAL_NETWORKS=ON
-DOPENVX_CONFORMANCE_NNEF_IMPORT=ON
-DOPENVX_USE_NN=ON
-DOPENVX_USE_IX=ON
-DOPENVX_USE_U1=ON
-DOPENVX_USE_USER_DATA_OBJECT=ON
-DOPENVX_USE_PIPELINING=ON
-DOPENVX_USE_STREAMING=ON
jobs:
# ================================================================
# Stage 1 — Build sample (Debug) + Conformance Test Suite
# ================================================================
build:
name: Build · OpenVX (Debug) + CTS
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
lfs: true
- name: Install dependencies
run: |
sudo apt-get update -qq
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq cmake make git git-lfs python3 gcc g++
- name: Verify LFS files
run: git lfs ls-files | head -5 || true
- name: Build & install sample (Debug)
run: |
mkdir -p build/Linux/x64/Debug && cd build/Linux/x64/Debug
cmake "$GITHUB_WORKSPACE" \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX="$OPENVX_DIR" \
-DCMAKE_INSTALL_BINDIR=bin -DCMAKE_INSTALL_LIBDIR=bin \
-DBUILD_X64=1 \
$OPENVX_FEATURES
make install -j$(nproc)
- name: Build Conformance Test Suite
run: |
rm -rf "$GITHUB_WORKSPACE/build-cts" && mkdir -p "$GITHUB_WORKSPACE/build-cts" && cd "$GITHUB_WORKSPACE/build-cts"
cmake \
-DOPENVX_INCLUDES="$OPENVX_DIR/include" \
-DOPENVX_LIBRARIES="$OPENVX_DIR/bin/libopenvx.so;$OPENVX_DIR/bin/libvxu.so;$OPENVX_DIR/bin/libnnef-lib.a;pthread;dl;m;rt;stdc++" \
-DCMAKE_C_FLAGS="-I$GITHUB_WORKSPACE/kernels/NNEF-Tools/parser/cpp/include" \
$OPENVX_FEATURES \
"$GITHUB_WORKSPACE/cts/"
cmake --build . -j$(nproc)
- name: Upload conformance artifact
uses: actions/upload-artifact@v4
with:
name: openvx-conformance
# Self-contained: CTS binary + built test modules (build-cts),
# the installed OpenVX libraries, and the test data.
path: |
build-cts/
install/Linux/x64/Debug/
cts/test_data/
retention-days: 1
# ================================================================
# Stage 1 — Build sample (Release) — build gate only
# ================================================================
build-release:
name: Build · OpenVX (Release)
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
lfs: true
- name: Install dependencies
run: |
sudo apt-get update -qq
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq cmake make git git-lfs python3 gcc g++
- name: Build & install sample (Release)
run: |
mkdir -p build/Linux/x64/Release && cd build/Linux/x64/Release
cmake "$GITHUB_WORKSPACE" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install/Linux/x64/Release" \
-DCMAKE_INSTALL_BINDIR=bin -DCMAKE_INSTALL_LIBDIR=bin \
-DBUILD_X64=1 \
$OPENVX_FEATURES
make install -j$(nproc)
- name: Upload Release install artifact
uses: actions/upload-artifact@v4
with:
name: openvx-release
path: install/Linux/x64/Release
retention-days: 1
# ================================================================
# Stage 2 — Conformance test slices (need both Stage 1 builds)
# ================================================================
baseline:
name: Conformance · Framework · Baseline & smoke
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run baseline tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="GraphBase.*:Logging.*:SmokeTestBase.*:SmokeTest.*:TargetBase.*:Target.*"
graph:
name: Conformance · Framework · Graph
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run graph tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="Graph.*:GraphEnhanced.*:GraphCallback.*:GraphDelay.*:GraphDelayTensor.*:GraphROI.*:UserNode.*:-GraphPipeline.*:-GraphStreaming.*"
data-objects:
name: Conformance · Data objects
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run data object tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="Scalar.*:Array.*:ObjectArray.*:Matrix.*:Convolution.*:Distribution.*:LUT.*:Histogram.*"
user-data-object:
name: "Conformance · Extension · User Data Object"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run User Data Object tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 120 ./bin/vx_test_conformance --filter="UserDataObject.*"
user-kernels:
name: Conformance · Framework · User kernels
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run user kernel tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="UserNode.*:UserKernel.*"
import-export:
name: "Conformance · Extension · Import/Export (IX)"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run Import/Export tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="Graph/ExportImport*:*IX*:ExtensionObject.*"
# ================================================================
# Pipelining (implemented on ToT) — split into fast + stress slices.
# Tests run against the unoptimized Debug C-model, which is much slower
# than an optimized build, so the heavy loop_count cases are isolated
# into their own job to run in parallel with the light ones.
# ================================================================
pipelining-fast:
name: "Conformance · Extension · Pipelining (fast)"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run pipelining fast tests (loop_count 0 / 1)
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 1800 ./bin/vx_test_conformance --filter="GraphPipeline.*:-*loop_count=100*:-*loop_count=1000*"
pipelining-stress:
name: "Conformance · Extension · Pipelining (stress)"
needs: [build, build-release]
runs-on: ubuntu-22.04
# Heavy loop_count=100/1000 cases (incl. a 2048x1024 image) on the Debug
# C-model need generous headroom.
timeout-minutes: 90
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run pipelining stress tests (loop_count 100 / 1000)
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 4800 ./bin/vx_test_conformance --filter="*loop_count=100*:*loop_count=1000*"
# ================================================================
# Streaming — functional on ToT; expected to pass.
# ================================================================
streaming:
name: "Conformance · Extension · Streaming"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run streaming tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 900 ./bin/vx_test_conformance --filter="GraphStreaming.*"
# ================================================================
# Neural Networks — full feature set is expected to pass now that
# Git LFS brings in the missing test weights.
# ================================================================
neural-networks:
name: Conformance · Neural Networks · Core
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run Neural Network tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 1200 ./bin/vx_test_conformance --filter="TensorNetworks.*:*NN*:VxKernelOfNNAndNNEF.*:VxParameterOfNNAndNNEF.*:MetaFormatOfNNAndNNEF.*:UserKernelsOfNNAndNNEF.*"
nnef-import:
name: "Conformance · Neural Networks · NNEF import"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run NNEF import tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="*NNEF*"
# ================================================================
# Vision — functional groups (mirrors rustVX)
# ================================================================
vision-color:
name: "Conformance · Vision · Color & channel"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run color / channel tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="ColorConvert.*:ChannelExtract.*:ChannelCombine.*:vxConvertDepth.*:vxuConvertDepth.*"
vision-filters:
name: "Conformance · Vision · Filters & morphology"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run filter / morphology tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="Box3x3.*:Gaussian3x3.*:Median3x3.*:Dilate3x3.*:Erode3x3.*:Sobel3x3.*:Magnitude.*:Phase.*:NonLinearFilter.*:Convolve.*:EqualizeHistogram.*"
vision-arithmetic:
name: "Conformance · Vision · Arithmetic & bitwise"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run arithmetic / bitwise tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="vxAddSub.*:vxuAddSub.*:vxMultiply.*:vxuMultiply.*:vxBinOp8u.*:vxuBinOp8u.*:vxBinOp16s.*:vxuBinOp16s.*:vxBinOp1u.*:vxuBinOp1u.*:vxNot.*:vxuNot.*:WeightedAverage.*:Threshold.*"
vision-geometric:
name: "Conformance · Vision · Geometric"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run geometric transform tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="Scale.*:WarpAffine.*:WarpPerspective.*:Remap.*:HalfScaleGaussian.*"
vision-features:
name: "Conformance · Vision · Features & edges"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run feature / edge detection tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="HarrisCorners.*:FastCorners.*:vxCanny.*:vxuCanny.*"
vision-statistics:
name: "Conformance · Vision · Statistics"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run statistics tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="MeanStdDev.*:MinMaxLoc.*:Integral.*"
vision-image-ops:
name: "Conformance · Vision · Image ops"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run image operation tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="Image.*:vxCopyImagePatch.*:vxMapImagePatch.*:vxCreateImageFromChannel.*:vxCopyRemapPatch.*:vxMapRemapPatch.*"
vision-pyramid:
name: "Conformance · Vision · Pyramid & optical flow"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run pyramid / optical flow tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="GaussianPyramid.*:LaplacianPyramid.*:LaplacianReconstruct.*:OptFlowPyrLK.*"
# ================================================================
# Enhanced Vision — functional groups (mirrors rustVX)
# ================================================================
enhanced-vision-tensor-arithmetic:
name: "Conformance · Enhanced Vision · Tensor arithmetic"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run Tensor Arithmetic tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="TensorOp.*:Min.*:Max.*"
enhanced-vision-tensor-transforms:
name: "Conformance · Enhanced Vision · Tensor transforms"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run Tensor Transforms tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="Tensor*.*:-TensorOp.*"
enhanced-vision-feature-extraction:
name: "Conformance · Enhanced Vision · Feature extraction"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run Feature Extraction tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="HogCells.*:HogFeatures.*:MatchTemplate.*:LBP.*"
enhanced-vision-post-processing:
name: "Conformance · Enhanced Vision · Post-processing"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run Post-Processing tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="Copy.*:Nonmaxsuppression.*:Houghlinesp.*"
enhanced-vision-advanced-filtering:
name: "Conformance · Enhanced Vision · Advanced filtering"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run Advanced Filtering tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 300 ./bin/vx_test_conformance --filter="BilateralFilter.*"
enhanced-vision-control-flow:
name: "Conformance · Enhanced Vision · Control flow"
needs: [build, build-release]
runs-on: ubuntu-22.04
steps:
- name: Download conformance artifact
uses: actions/download-artifact@v4
with:
name: openvx-conformance
- name: Run Control Flow tests
run: |
cd build-cts && chmod +x bin/vx_test_conformance
LD_LIBRARY_PATH="$OPENVX_DIR/bin:./lib" \
timeout 600 ./bin/vx_test_conformance --filter="ControlFlow.*"