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?
- Create
fp32
Swish operation JIT Emitter for RISCV64 platform with RVV1.0 support. Use OpenVINO CPU plugin JIT emitters documentation and RISC-V "V" Vector Extension documentation for details. - Support your implemented JIT Emitter in the JIT Executor.
- Modify RISCV64 kernel (in both places: create_eltwise_emitter and get_supported_precisions) to apply developed JIT emitter.
Before emitter implementation, please, modify tests to be sure that developed functionality is covered by test:
- Add
jit
kernel check in activation test, the test must fail. - If test doesn't fail then add supported operation in CPU activation test instantiation if it's absent.
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*Swish*"
# 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*Swish*"
Example Pull Requests
Resources
- Contribution guide - start here!
- What is OpenVINO?
- CPU plugin JIT emitters
- Blog post on contributing to OpenVINO
- User documentation
- Intel DevHub Discord channel - engage in discussions, ask questions and talk to OpenVINO developers
- How to link your Pull Request to an issue
- "Cross compile OpenVINO™ Runtime for RISCV64 systems"
- RISC-V "V" Vector Extension
Contact points
Metadata
Metadata
Assignees
Type
Projects
Status