Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CPU][GHA] CPU tests on riscV arch #25673

Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/dockerfiles/docker_tag
Original file line number Diff line number Diff line change
@@ -1 +1 @@
pr-27882
pr-25673
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,13 @@ RUN echo deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricte

RUN dpkg --add-architecture riscv64 && \
apt-get update -o Dir::Etc::sourcelist=/etc/apt/sources.list.d/riscv64-sources.list && \
apt-get install -y --no-install-recommends libpython3-dev:riscv64
apt-get install -y --no-install-recommends libpython3-dev:riscv64 && \
apt-get install libgomp1:riscv64 && \
apt-get install libatomic1:riscv64

# Setup pip
ENV PIP_VERSION="24.0"
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
python3 get-pip.py --no-cache-dir pip==${PIP_VERSION} && \
rm -f get-pip.py

282 changes: 282 additions & 0 deletions .github/workflows/dev_cpu_linux_riscv.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,282 @@
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_DIR: /__w/openvino/xuantie
mryzhov marked this conversation as resolved.
Show resolved Hide resolved
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
SCCACHE_AZURE_KEY_PREFIX: ubuntu20_x86_64_Release
mryzhov marked this conversation as resolved.
Show resolved Hide resolved
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
mryzhov marked this conversation as resolved.
Show resolved Hide resolved
CCACHE_MAXSIZE: 2G
XUANTIE_BIN_PATH: /mount/testdata1/
mryzhov marked this conversation as resolved.
Show resolved Hide resolved
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' }}
mryzhov marked this conversation as resolved.
Show resolved Hide resolved
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}
mryzhov marked this conversation as resolved.
Show resolved Hide resolved
pushd ${XUANTIE_DIR}
cp ${XUANTIE_BIN_PATH}${XUANTIE_TAR_NAME}.tar ${XUANTIE_DIR}
tar -xf ${XUANTIE_TAR_NAME}.tar
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if the file is small then we don't need to copy it first.

chmod -R +x ${XUANTIE_TAR_NAME}
ln -s /usr/include/riscv64-linux-gnu/ /usr/include/python3.10/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need this link?

popd
mryzhov marked this conversation as resolved.
Show resolved Hide resolved

mryzhov marked this conversation as resolved.
Show resolved Hide resolved
- 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}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of manual copy of build steps, can you reuse existing Linux build reusable workflow ?
It's being improved in this PR #26156

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be done later as part of [CVS-159545]


- name: Cmake build - OpenVINO
run: cmake --build ${BUILD_DIR} --parallel $(nproc) --config ${{ env.CMAKE_BUILD_TYPE }}

mryzhov marked this conversation as resolved.
Show resolved Hide resolved
- 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 XUANTIE
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need to upload it in artifacts?

uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4
if: always()
with:
name: xuantie
path: ${{ env.XUANTIE_DIR }}
if-no-files-found: 'ignore'
mryzhov marked this conversation as resolved.
Show resolved Hide resolved

- 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*' }}
yury-intel marked this conversation as resolved.
Show resolved Hide resolved

steps:
- name: Download Xuantie
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: xuantie
path: ${{ env.XUANTIE_DIR }}

mryzhov marked this conversation as resolved.
Show resolved Hide resolved
- name: Download OpenVINO package
mryzhov marked this conversation as resolved.
Show resolved Hide resolved
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
chmod -R +x ${XUANTIE_DIR}/${XUANTIE_TAR_NAME}
mryzhov marked this conversation as resolved.
Show resolved Hide resolved
${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

Loading