-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CPU][GHA] CPU tests on riscV arch (#25673)
### Details: - *Implemented OV CPU tests pipeline with riscV architecture via Xuantie platform (fetched frombinaries, builded by @a-sidorova , sources https://github.com/XUANTIE-RV/xuantie-gnu-toolchain)*) - *todo: python support, building job reusing, implementing support python runner (i.e. using wrapping xuantie application instead of gtests directly)* Implementation of toolchain build - #28142 ### Tickets: - *146964* --------- Co-authored-by: Mikhail Ryzhov <[email protected]>
- Loading branch information
1 parent
844809e
commit 89f3fc9
Showing
3 changed files
with
274 additions
and
2 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
pr-27882 | ||
pr-25673 |
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,269 @@ | ||
name: Linux RISC-V CPU workflow with Xuantie (Ubuntu 22.04, Python 3.10) | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
testFilter: | ||
description: 'Filter for google tests' | ||
required: true | ||
default: '*smoke_AdaPoolAvg4DLayoutTest*' | ||
pull_request: | ||
paths: | ||
- '.github/workflows/dev_cpu_linux_riscv.yml' | ||
|
||
env: | ||
CMAKE_GENERATOR: 'Ninja Multi-Config' | ||
XUANTIE_BIN_PATH: /mount/testdata1 | ||
XUANTIE_DIR: /__w/openvino/xuantie | ||
XUANTIE_TAR_NAME: 'Xuantie-900-gcc-linux-5.15.0-glibc-x86_64-V2.8.1' | ||
|
||
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: | ||
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_CXX_COMPILER_LAUNCHER: ccache | ||
CMAKE_C_COMPILER_LAUNCHER: ccache | ||
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 | ||
CCACHE_REMOTE_DIR: /mount/caches/ccache/ubuntu22_riscv64_xuantie/${{ github.base_ref || github.ref_name }} | ||
CCACHE_DIR: /__w/openvino/openvino/ccache | ||
CCACHE_TEMPDIR: /__w/openvino/openvino/ccache_temp | ||
CCACHE_MAXSIZE: 2G | ||
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 | ||
|
||
- name: Setup ccache | ||
id: ccache_restore | ||
uses: ./openvino/.github/actions/cache | ||
with: | ||
save-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} | ||
tar -xvf ${XUANTIE_BIN_PATH}/${XUANTIE_TAR_NAME}.tar -C ${XUANTIE_DIR} | ||
chmod -R +x ${XUANTIE_DIR}/${XUANTIE_TAR_NAME} | ||
- name: Clean ccache stats | ||
run: ccache --zero-stats | ||
|
||
- name: CMake configure - OpenVINO | ||
run: | | ||
cmake \ | ||
-G "${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=OFF \ | ||
-DCMAKE_TOOLCHAIN_FILE=${OPENVINO_REPO}/cmake/toolchains/riscv64-071-xuantie-gnu.toolchain.cmake \ | ||
-DRISCV_TOOLCHAIN_ROOT=${XUANTIE_DIR}/${XUANTIE_TAR_NAME} \ | ||
-DENABLE_PYTHON=OFF \ | ||
-DENABLE_PYTHON_PACKAGING=ON \ | ||
-DENABLE_WHEEL=OFF \ | ||
-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 $(nproc) --config ${{ env.CMAKE_BUILD_TYPE }} | ||
|
||
- name: Show ccache stats | ||
run: ccache --show-stats | ||
|
||
- 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 | ||
- 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 | ||
# # | ||
|
||
- 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-4-cores-16gb | ||
container: | ||
image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_riscv }} | ||
volumes: | ||
- /mount:/mount | ||
defaults: | ||
run: | ||
shell: bash | ||
env: | ||
INSTALL_DIR: ${{ github.workspace }}/install | ||
INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests | ||
GTEST_FILTER: ${{ github.event_name == 'workflow_dispatch' && inputs.testFilter || '*smoke_AdaPoolAvg4DLayoutTest*' }} | ||
|
||
steps: | ||
- name: Init XUANTIE | ||
run: | | ||
mkdir ${XUANTIE_DIR} | ||
tar -xvf ${XUANTIE_BIN_PATH}/${XUANTIE_TAR_NAME}.tar -C ${XUANTIE_DIR} | ||
chmod -R +x ${XUANTIE_DIR}/${XUANTIE_TAR_NAME} | ||
- 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 | ||
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 | ||
${XUANTIE_DIR}/${XUANTIE_TAR_NAME}/bin/qemu-riscv64 -cpu c910v ${INSTALL_TEST_DIR}/tests/ov_cpu_func_tests --gtest_filter=${{ env.GTEST_FILTER }} --gtest_print_time=1 | ||
timeout-minutes: 25 | ||
|