[CPU][GHA] CPU tests on riscV arch #105
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: | |
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 | |
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: Check docker env | |
run: | | |
echo 'check env' | |
echo ${CCACHE_MAXSIZE} | |
echo ${DEBIAN_FRONTEND} | |
- 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 | |
- 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} | |
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 | |
ln -s /usr/include/riscv64-linux-gnu/ /usr/include/python3.10/ | |
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-xuantie-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 | |
# Build_2: | |
# needs: [Docker, Smart_CI] | |
# uses: ./.github/workflows/job_build_linux.yml | |
# with: | |
# runner: 'aks-linux-16-cores-32gb' | |
# container: '{"image": "${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_riscv }}", "volumes": ["/mount:/mount"], "options": "-e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING"}' | |
# affected-components: ${{ needs.smart_ci.outputs.affected_components }} | |
# event-name: ${{ github.event_name }} | |
# os: 'ubuntu_22_04' | |
# build-js: false | |
# build-contrib: false | |
# build-debian-packages: true | |
# build-rpm-packages: false | |
# cmake-options: |- | |
# -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-xuantie-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} | |
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 | |
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_DIR=$GITHUB_WORKSPACE/install" >> "$GITHUB_ENV" | |
echo "INSTALL_TEST_DIR=$GITHUB_WORKSPACE/install/tests" >> "$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: 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 | |
chmod -R 777 ${XUANTIE_DIR}/${XUANTIE_TAR_NAME} | |
${XUANTIE_DIR}/${XUANTIE_TAR_NAME}/bin/qemu-riscv64 -cpu c910v ${INSTALL_TEST_DIR}/tests/ov_cpu_func_tests --gtest_filter=*smoke_AdaPoolAvg4DLayoutTest* --gtest_print_time=1 | |
timeout-minutes: 25 | |
- name: Upload Test Results | |
run: | | |
echo 'to do' |