openvinotoolkit / openvino

OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference
https://docs.openvino.ai
Apache License 2.0
7.33k stars 2.28k forks source link

[Good First Issue] [ARM]: Implement CPU plugin just-in-time emitter for Negative operation #27500

Open a-sidorova opened 1 week ago

a-sidorova commented 1 week ago

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 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.

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.

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*Activation*Negative*"

Example Pull Requests

Resources

Contact points

@a-sidorova, @dmitry-gorokhov

nashez commented 1 day ago

.take

github-actions[bot] commented 1 day ago

Thank you for looking into this issue! Please let us know if you have any questions or require any help.