openvino
openvino copied to clipboard
[Good First Issue] [ARM]: Implement CPU plugin just-in-time emitter for GreaterEqual operation
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
Recommended to use ARM CPU based platform for development (e.g. Mac, Raspberry Pi etc). Emulators (e.g. QEMU) is still an option, but not that convenient, especially for final performance evaluation.
What needs to be done?
- Create
fp32
GreaterEqual operation JIT emitter for ARM64 SIMD platform. Use OpenVINO CPU plugin JIT emitters documentation and Arm A-profile A64 Instruction Set Architecture documentation for details. - Modify ARM64 executor and ARM64 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 deveoped functionality is covered by test:
- Add
jit
kernel check in element-wise or activation test, the test must fail. - If test doesn't fail then add supported operation in element-wise test instantiation or activation test instantiation if it's absent.
Tests
Tests are disabled in default build, so ensure to add -DENABLE_TESTS=ON
into cmake command.
GoogleTest is used for testing. CPU functional test target is ov_cpu_func_tests. You can use two GoogleTest
filters for element-wise and activation operations:
- for element-wise operations:
./bin/[platform]/[build_type]/ov_cpu_func_tests --gtest_filter="*smoke*Eltwise*"
- for activations:
./bin/[platform]/[build_type]/ov_cpu_func_tests --gtest_filter="*smoke*Activation*"
Example Pull Requests
- Abs operation: https://github.com/openvinotoolkit/openvino/pull/23692
- Sigmoid operation, which reuses Exp emitter: https://github.com/openvinotoolkit/openvino/pull/23065
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
Contact points
@eshoguli, @dmitry-gorokhov
Ticket
CVS-140846