-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
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?
- CPU Plugin has optimization for
Poweroperation with scalar second input - converts suchPowerops to CPU-opset opPowerStatic. Currently, CPU Plugin has JIT Emitter only forPowerStaticop with scalar second input for ARM64 SIMD platforms. Need to implement JIT emitterjit_power_dynamic_emitterfor eltwise algorithmPowerDynamic-Powerop with non-scalar second inputs. Use OpenVINO CPU plugin JIT emitters documentation and Arm A-profile A64 Instruction Set Architecture documentation for details.
Hint: the emitter should emit binary call for the STL functionpowfas it's done injit_power_dynamic_emitterfor x64 platforms. - Remove limitation condition from ARM64 JIT Executor.
Before emitter implementation, please, modify tests to be sure that developed functionality is covered by test:
- Add
jitkernel check in eltwise test, the test must fail.
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 GoogleTest filter:
./bin/[platform]/[build_type]/ov_cpu_func_tests --gtest_filter="*smoke*Eltwise*Pow*"Examples
- PR with Abs operation support: [CPU] [ARM64] jit abs #23692
- Implementation of
jit_power_dynamic_emitterfor x64 platforms: link. - Implementation of
jit_power_static_emitterfor ARM64 platforms that already emits binary function call ofpowfin some corner cases: link.
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
Metadata
Metadata
Assignees
Labels
Type
Projects
Status