[CPU][GHA] CPU tests on riscV arch #73
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux developer RISC-V workflow for CPU plugin (Ubuntu 22.04, Python 3.10) | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
- '.github/workflows/dev_cpu_linux_riscv.yml' | |
concurrency: | |
# github.ref is not unique in post-commit | |
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-dev-cpu-linux-riscv | |
cancel-in-progress: true | |
permissions: read-all | |
jobs: | |
# copypaste form linux_riscv.yml until refactoring with reusable actions | |
Smart_CI: | |
runs-on: ubuntu-latest | |
outputs: | |
affected_components: "${{ steps.smart_ci.outputs.affected_components }}" | |
changed_components: "${{ steps.smart_ci.outputs.changed_components }}" | |
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}" | |
steps: | |
- name: checkout action | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
with: | |
sparse-checkout: .github/actions/smart-ci | |
- name: Get affected components | |
id: smart_ci | |
uses: ./.github/actions/smart-ci | |
with: | |
repository: ${{ github.repository }} | |
pr: ${{ github.event.number }} | |
commit_sha: ${{ github.sha }} | |
ref_name: ${{ github.ref_name }} | |
component_pattern: "category: (.*)" | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
skip_when_only_listed_labels_set: 'docs' | |
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*' | |
Docker: | |
needs: Smart_CI | |
runs-on: aks-linux-4-cores-16gb-docker-build | |
container: | |
image: openvinogithubactions.azurecr.io/docker_build:0.2 | |
volumes: | |
- /mount:/mount | |
outputs: | |
images: "${{ steps.handle_docker.outputs.images }}" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
- uses: ./.github/actions/handle_docker | |
id: handle_docker | |
with: | |
images: | | |
ov_build/ubuntu_22_04_riscv | |
registry: 'openvinogithubactions.azurecr.io' | |
dockerfiles_root_dir: '.github/dockerfiles' | |
changed_components: ${{ needs.smart_ci.outputs.changed_components }} | |
Build: | |
needs: [Smart_CI, Docker] | |
timeout-minutes: 150 | |
defaults: | |
run: | |
shell: bash | |
runs-on: aks-linux-16-cores-32gb | |
container: | |
image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_riscv }} | |
volumes: | |
- /mount:/mount | |
env: | |
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input | |
CMAKE_BUILD_TYPE: 'Release' | |
CMAKE_GENERATOR: 'Ninja Multi-Config' | |
CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
CMAKE_C_COMPILER_LAUNCHER: ccache | |
SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
SCCACHE_SERVER_PORT: 35555 | |
SCCACHE_ERROR_LOG: /__w/openvino/sccache_log.txt | |
SCCACHE_LOG: warn | |
GITHUB_WORKSPACE: '/__w/openvino/openvino' | |
OPENVINO_REPO: /__w/openvino/openvino/openvino | |
INSTALL_DIR: /__w/openvino/openvino/openvino_install | |
INSTALL_TEST_DIR: /__w/openvino/openvino/tests_install | |
BUILD_DIR: /__w/openvino/openvino/openvino_build | |
SCCACHE_AZURE_KEY_PREFIX: ubuntu20_x86_64_Release | |
XUANTIE_DIR: /__w/openvino/xuantie | |
CCACHE_REMOTE_DIR: /mount/caches/ccache/ubuntu22_riscv64/${{ github.base_ref || github.ref_name }} | |
CCACHE_DIR: /__w/openvino/openvino/ccache | |
CCACHE_TEMPDIR: /__w/openvino/openvino/ccache_temp | |
CCACHE_MAXSIZE: 2G | |
XUANTIE_BIN_PATH: /mount/testdata1/ | |
XUANTIE_TAR_NAME: 'Xuantie-900-gcc-linux-5.15.0-glibc-x86_64-V2.8.1' | |
if: "!needs.smart_ci.outputs.skip_workflow" | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
with: | |
path: ${{ env.OPENVINO_REPO }} | |
submodules: 'true' | |
# | |
# Print system info | |
# | |
- name: System info | |
uses: ./openvino/.github/actions/system_info | |
# remove ? | |
- name: Setup ccache | |
id: ccache_restore | |
uses: ./openvino/.github/actions/cache | |
with: | |
save-always: ${{ github.event_name == 'push' && 'true' || 'false' }} | |
cleanup-always: ${{ github.event_name == 'push' && 'true' || 'false' }} | |
cache-size: 10 | |
max-cache-size: 50 | |
cache-path: ${{ env.CCACHE_REMOTE_DIR }} | |
path: ${{ env.CCACHE_DIR }} | |
key: ${{ runner.os }}-${{ runner.arch }}-ccache-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-${{ runner.arch }}-ccache | |
- name: Init XUANTIE | |
run: | | |
mkdir ${XUANTIE_DIR} | |
pushd ${XUANTIE_DIR} | |
echo 'what is going on ?' | |
ls -la ${XUANTIE_BIN_PATH} | |
cp ${XUANTIE_BIN_PATH}${XUANTIE_TAR_NAME}.tar ${XUANTIE_DIR} | |
ls -la ${XUANTIE_DIR} | |
tar -xf ${XUANTIE_TAR_NAME}.tar | |
chmod -R 777 ${XUANTIE_TAR_NAME} | |
ls -la ${XUANTIE_TAR_NAME}/libexec/gcc/riscv64-unknown-linux-gnu/10.4.0/ | |
python3 -m pip install --upgrade pip setuptools wheel | |
echo 'prepare py - riscv interaction' | |
ln -s /usr/include/riscv64-linux-gnu/ /usr/include/python3.10/ | |
# echo 'show old link' | |
# ls -la ${XUANTIE_DIR}/libexec/gcc/riscv64-unknown-linux-gnu/10.4.0/ | |
# echo 'show new link' | |
# cd ${XUANTIE_DIR}/libexec/gcc/riscv64-unknown-linux-gnu/10.4.0/ | |
# ln -s liblto_plugin.so.0.0.0 liblto_plugin.so | |
popd | |
- name: CMake configure - OpenVINO - 2 | |
run: | | |
cmake \ | |
-G "${{ env.CMAKE_GENERATOR }}" \ | |
-DENABLE_CPPLINT=OFF \ | |
-DENABLE_NCC_STYLE=OFF \ | |
-DENABLE_TESTS=ON \ | |
-DENABLE_INTEL_CPU=ON \ | |
-DENABLE_INTEL_GPU=OFF \ | |
-DENABLE_INTEL_NPU=OFF \ | |
-DENABLE_SAMPLES=ON \ | |
-DCMAKE_TOOLCHAIN_FILE=${OPENVINO_REPO}/cmake/toolchains/riscv64-071-thead-gnu.toolchain.cmake \ | |
-DRISCV_TOOLCHAIN_ROOT=${XUANTIE_DIR}/${XUANTIE_TAR_NAME} \ | |
-DENABLE_PYTHON=ON \ | |
-DENABLE_PYTHON_PACKAGING=ON \ | |
-DENABLE_WHEEL=ON \ | |
-DENABLE_STRICT_DEPENDENCIES=OFF \ | |
-DCMAKE_VERBOSE_MAKEFILE=ON \ | |
-DCPACK_GENERATOR=TGZ \ | |
-DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \ | |
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \ | |
-S ${OPENVINO_REPO} \ | |
-B ${BUILD_DIR} | |
- name: Cmake build - OpenVINO | |
run: cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} | |
- name: Cmake install - OpenVINO | |
run: | | |
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -P ${BUILD_DIR}/cmake_install.cmake | |
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_TEST_DIR} -DCOMPONENT=tests -P ${BUILD_DIR}/cmake_install.cmake | |
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -DCOMPONENT=python_wheels -P ${BUILD_DIR}/cmake_install.cmake | |
- name: Pack Artifacts | |
run: | | |
pushd ${INSTALL_DIR} | |
tar -czvf ${BUILD_DIR}/openvino_package.tar.gz * | |
popd | |
pushd ${INSTALL_TEST_DIR} | |
tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz * | |
popd | |
# | |
# Upload build artifacts and logs | |
# | |
- name: Upload XUANTIE | |
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 | |
if: always() | |
with: | |
name: xuantie | |
path: ${{ env.XUANTIE_DIR }} | |
if-no-files-found: 'ignore' | |
- name: Upload build logs | |
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 | |
if: always() | |
with: | |
name: build_logs | |
path: ${{ env.SCCACHE_ERROR_LOG }} | |
if-no-files-found: 'ignore' | |
- name: Upload openvino package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 | |
with: | |
name: openvino_package | |
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz | |
if-no-files-found: 'error' | |
- name: Upload openvino tests package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 | |
with: | |
name: openvino_tests | |
path: ${{ env.BUILD_DIR }}/openvino_tests.tar.gz | |
if-no-files-found: 'error' | |
- name: Clean ccache | |
run: ccache --cleanup | |
CPU_Functional_Tests: | |
name: CPU functional tests | |
needs: [ Docker, Build, Smart_CI ] | |
timeout-minutes: 30 | |
runs-on: aks-linux-8-cores-32gb | |
container: | |
image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_riscv }} | |
volumes: | |
- /mount:/mount | |
defaults: | |
run: | |
shell: bash | |
env: | |
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input | |
INSTALL_DIR: ${{ github.workspace }}/install | |
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests | |
# PARALLEL_TEST_SCRIPT: ${{ github.workspace }}/install/tests/functional_test_utils/layer_tests_summary/run_parallel.py | |
XUANTIE_TAR_NAME: 'Xuantie-900-gcc-linux-5.15.0-glibc-x86_64-V2.8.1' | |
XUANTIE_DIR: /__w/openvino/xuantie | |
steps: | |
- name: Download OpenVINO package | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: xuantie | |
path: ${{ env.XUANTIE_DIR }} | |
- name: Download OpenVINO package | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: openvino_package | |
path: ${{ env.INSTALL_DIR }} | |
- name: Download OpenVINO tests package | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: openvino_tests | |
path: ${{ env.INSTALL_TEST_DIR }} | |
# # Needed as ${{ github.workspace }} is not working correctly when using Docker | |
# - name: Setup Variables | |
# run: | | |
# echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$GITHUB_ENV" | |
# echo 'show tests dir' | |
# ls -la ${{ env.INSTALL_TEST_DIR }} | |
# Needed as ${{ github.workspace }} is not working correctly when using Docker | |
- name: Setup Variables | |
run: | | |
echo "INSTALL_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV" | |
echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$GITHUB_ENV" | |
# echo "PARALLEL_TEST_SCRIPT=$GITHUB_WORKSPACE/install/tests/functional_test_utils/layer_tests_summary/run_parallel.py" >> "$GITHUB_ENV" | |
- name: Extract OpenVINO packages | |
run: | | |
pushd $INSTALL_DIR | |
tar -xzf openvino_package.tar.gz -C $INSTALL_DIR | |
popd | |
pushd $INSTALL_TEST_DIR | |
tar -xzf openvino_tests.tar.gz -C $INSTALL_TEST_DIR | |
ls -la $INSTALL_TEST_DIR/tests | |
popd | |
# - name: Fetch setup_python action | |
# uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
# with: | |
# sparse-checkout: | | |
# .github/actions/setup_python/action.yml | |
# sparse-checkout-cone-mode: false | |
# path: 'openvino' | |
# # - name: Setup Python 3.11 | |
# # uses: ./openvino/.github/actions/setup_python | |
# # with: | |
# # version: '3.11' | |
# # should-setup-pip-paths: 'false' | |
# # self-hosted-runner: ${{ runner.os == 'Linux' }} | |
# - name: Install python dependencies for run_parallel.py | |
# run: python3 -m pip install -r ${INSTALL_DIR}/functional_test_utils/layer_tests_summary/requirements.txt | |
- name: Intel CPU plugin func tests | |
run: | | |
# Needed as the Linux CC does not require setupvars to work | |
if [[ -f "${INSTALL_DIR}/setupvars.sh" ]]; then | |
source ${INSTALL_DIR}/setupvars.sh | |
fi | |
# Needed as ze_loader.so is under INSTALL_TEST_DIR | |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${INSTALL_TEST_DIR}/tests | |
# ls -LA ${XUANTIE_DIR}/${XUANTIE_TAR_NAME}/ | |
chmod -R 777 ${XUANTIE_DIR}/${XUANTIE_TAR_NAME} | |
# apt-get install libgomp1 | |
# apt-get update && apt-get install -y --no-install-recommends apt-utils | |
# apt-get -y install curl | |
# apt-get install libgomp1 | |
${XUANTIE_DIR}/${XUANTIE_TAR_NAME}/bin/qemu-riscv64 ${INSTALL_TEST_DIR}/tests/ov_cpu_func_tests --gtest_filter=*smoke_AdaPoolAvg4DLayoutTest* --gtest_print_time=1 | |
timeout-minutes: 25 | |
# - name: Upload Test Results | |
# uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 | |
# if: always() | |
# with: | |
# name: test-results-functional-cpu | |
# path: | | |
# ${{ env.INSTALL_TEST_DIR }}/temp/*.log | |
# ${{ env.INSTALL_TEST_DIR }}/logs/*.log | |
# ${{ env.INSTALL_TEST_DIR }}/logs/failed/*.log | |
# ${{ env.INSTALL_TEST_DIR }}/logs/crashed/*.log | |
# ${{ env.INSTALL_TEST_DIR }}/logs/hanged/*.log | |
# ${{ env.INSTALL_TEST_DIR }}/logs/interapted/*.log | |
# ${{ env.INSTALL_TEST_DIR }}/logs/hash_table.csv | |
# if-no-files-found: 'error' | |
# Overall_Status: | |
# name: ci/gha_overall_status_linux_riscv | |
# needs: [Smart_CI, Build] | |
# if: ${{ always() }} | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Check status of all jobs | |
# if: >- | |
# ${{ | |
# contains(needs.*.result, 'failure') || | |
# contains(needs.*.result, 'cancelled') | |
# }} | |
# run: exit 1 |