Skip to content

Code Coverage

Kiriti Gowda edited this page Jun 18, 2025 · 5 revisions

MIVisionX - OpenVX Coverage Steps

Build MIVisionX with coverage enabled

cd ~/
git clone https://github.com/rocm/mivisionx
mkdir build_coverage && cd build_coverage
cmake -D CMAKE_BUILD_TYPE=Debug -D CMAKE_CXX_FLAGS="-fprofile-instr-generate -fcoverage-mapping" ../mivisionx
make -j8
sudo make install
cd ~/

Dump coverage data

mkdir code_coverage && cd code_coverage
export LLVM_PROFILE_FILE="$(pwd)/rawdata/library-%p.profraw"
cd ~/

Run all Tests

  • CTests
mkdir mivisionx_test && cd mivisionx_test
cmake /opt/rocm/share/mivisionx/test
ctest -VV
cd ~/
  • Conformance
mkdir conformance_tests && cd conformance_tests
git clone -b openvx_1.3 https://github.com/KhronosGroup/OpenVX-cts.git
export VX_TEST_DATA_PATH=$(pwd)/OpenVX-cts/test_data/
mkdir build_cts && cd build_cts
cmake -DOPENVX_INCLUDES=/opt/rocm/include/mivisionx -DOPENVX_LIBRARIES=/opt/rocm/lib/libopenvx.so\;/opt/rocm/lib/libvxu.so\;pthread\;dl\;m\;rt -DOPENVX_CONFORMANCE_VISION=ON ../OpenVX-cts
cmake --build .
# CPU Conformance
AGO_DEFAULT_TARGET=CPU LD_LIBRARY_PATH=./lib ./bin/vx_test_conformance
# GPU Conformance
AGO_DEFAULT_TARGET=GPU LD_LIBRARY_PATH=./lib ./bin/vx_test_conformance
cd ~/

Gather coverage data

sudo apt install llvm-amdgpu-dev lcov
cd code_coverage
/opt/amdgpu/lib/x86_64-linux-gnu/llvm-20.1/bin/llvm-profdata merge -sparse rawdata/*.profraw -o library.profdata
/opt/amdgpu/lib/x86_64-linux-gnu/llvm-20.1/bin/llvm-cov export -object /opt/rocm/lib/libopenvx.so --instr-profile=library.profdata --format=lcov > coverage.info
lcov --remove coverage.info '/opt/*' --output-file coverage.info
lcov --list coverage.info
lcov --summary coverage.info
cd ~/

Note

  • RHEL - /opt/amdgpu/lib64/llvm-20.1/bin/llvm-cov
  • Ubuntu - /opt/amdgpu/lib/x86_64-linux-gnu/llvm-20.1/bin
  • Generate HTML - genhtml coverage.info -o coverage-report
  • Check git commit - (printf "commit %s\0" $(git cat-file commit HEAD | wc -c); git cat-file commit HEAD) | sha1sum)
  • macOS - cmake -DOPENVX_INCLUDES=/opt/rocm/include/mivisionx -DOPENVX_LIBRARIES=/opt/rocm/lib/libopenvx.dylib\;/opt/rocm/lib/libvxu.dylib -DOPENVX_CONFORMANCE_VISION=ON -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ../OpenVX-cts
Clone this wiki locally