openvinotoolkit/openvino

[Good First Issue] [RISCV64]: Implement CPU plugin just-in-time emitter for SoftPlus operation

Open

#30,244 opened on Apr 21, 2025

View on GitHub
 (6 comments) (0 reactions) (1 assignee)C++ (3,229 forks)auto 404
category: CPUgood first issueplatform: risc-v

Repository metrics

Stars
 (10,286 stars)
PR merge metrics
 (Avg merge 14d 3h) (305 merged PRs in 30d)

Description

Context

JIT Emitters are part of code generation feature (a.k.a. tensor compiler) that automatically produces highly-efficient optimized fused subgraph binary code. Each emitter implements specific operation from low level OpenVINO dialect.

Prerequisites

Due to limited resources, cross compilation is preferred option now for building OpenVINO targeting RISC-V development boards. Please see the documentation "Cross compile OpenVINO™ Runtime for RISCV64 systems" for more details. For this work, you need to build xuantie-gnu-toolchain or riscv-gnu-toolchain with QEMU support for emulation. So you don't need to have RISC-V development board even to contribute to OpenVINO for these platforms 😃

What needs to be done?

Before emitter implementation, please, modify tests to be sure that developed functionality is covered by test:

Tests

Tests are disabled in default build, so ensure to add -DENABLE_TESTS=ON into cmake command during the project configuration.

GoogleTest is used for testing. CPU functional test target is ov_cpu_func_tests. You can use GoogleTest filter:

# If you use xuantie-gnu-toolchain:
<xuantie_install_path>/bin/qemu-riscv64 -cpu rv64,x-v=true,vext_spec=v1.0 ./bin/[platform]/[build_type]/ov_cpu_func_tests --gtest_filter="*smoke*Activation*SoftPlus*"

# If you use riscv-gnu-toolchain:
<riscv_install_path>/bin/qemu-riscv64 -cpu rv64,v=true,vext_spec=v1.0 ./bin/[platform]/[build_type]/ov_cpu_func_tests --gtest_filter="*smoke*Activation*SoftPlus*"

Example Pull Requests

Resources

Contact points

@aobolensk

Contributor guide