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.
Currently, Negative op is supported in CPU Plugin as Math op on x64 and ARM platforms. The Math ops use not efficient C++ implementations. The idea is to move Negative op from Math to Eltwise ops which use JIT emitters for the better performance. We already have x64 JIT emitter, so need to implement the same emitter for ARM
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.
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.
Currently,
Negative
op is supported in CPU Plugin asMath
op on x64 and ARM platforms. TheMath
ops use not efficient C++ implementations. The idea is to moveNegative
op fromMath
toEltwise
ops which use JIT emitters for the better performance. We already have x64 JIT emitter, so need to implement the same emitter for ARMPrerequisites
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?
fp32
Negative 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.EltwiseNegative
forNegative
op. Also, replace the typeMath
withEltwise
in TypeToNameMap.Negative
op inEltwise
node to execute this node on x64 platforms using already implemented JIT emitter.Before emitter implementation, please, modify tests to be sure that developed functionality is covered by test:
jit
kernel check in activation 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:Example Pull Requests
Resources
Contact points
@a-sidorova, @dmitry-gorokhov