Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
eshoguli opened this issue Apr 18, 2024 · 13 comments · May be fixed by #28752
Open

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

eshoguli opened this issue Apr 18, 2024 · 13 comments · May be fixed by #28752
Assignees
Labels
category: CPU OpenVINO CPU plugin good first issue Good for newcomers no_stale Do not mark as stale platform: arm OpenVINO on ARM / ARM64

Comments

@eshoguli
Copy link
Contributor

eshoguli commented Apr 18, 2024

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?

Before emitter implementation, please, modify tests to be sure that deveoped 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 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

Resources

Contact points

@dmitry-gorokhov, @a-sidorova

Ticket

CVS-137687

@eshoguli eshoguli added good first issue Good for newcomers no_stale Do not mark as stale labels Apr 18, 2024
@github-project-automation github-project-automation bot moved this to Contributors Needed in Good first issues Apr 18, 2024
@eshoguli eshoguli added category: CPU OpenVINO CPU plugin platform: arm OpenVINO on ARM / ARM64 labels Apr 18, 2024
@Aryan8912
Copy link
Contributor

.take

Copy link
Contributor

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

@p-wysocki p-wysocki moved this from Contributors Needed to Assigned in Good first issues Apr 19, 2024
@p-wysocki
Copy link
Contributor

Hello @Aryan8912, are you still working on that issue? Do you need any help?

@dmitry-gorokhov dmitry-gorokhov moved this from Assigned to In Review in Good first issues May 6, 2024
@eshoguli
Copy link
Contributor Author

Hi @Aryan8912 , let me know if you have any questions about implementation. Thanks!

@mlukasze mlukasze moved this from In Review to Contributors Needed in Good first issues Jul 25, 2024
@nashez
Copy link
Contributor

nashez commented Oct 9, 2024

.take

Copy link
Contributor

github-actions bot commented Oct 9, 2024

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

@nashez
Copy link
Contributor

nashez commented Oct 9, 2024

Taking this up since I am already working on the SoftSign implementation and this would be similar.

@p-wysocki p-wysocki moved this from Contributors Needed to Assigned in Good first issues Oct 9, 2024
@nashez
Copy link
Contributor

nashez commented Oct 20, 2024

@dmitry-gorokhov @eshoguli I don't see an entry for Eltwise::SoftPlus in the enum class Algorithm.
Also have some questions about the implementation. I don't see a log instruction in the ARM ISA, and am thinking to use Taylor's expansion for the same. Do you guys have any other approaches for me to consider?

nashez added a commit to nashez/openvino that referenced this issue Oct 20, 2024
- Added a jit_sqrt_emitter derived class in
  aarch64/jit_eltwise_emitters
- Created entry Algorithm::EltwiseSqrt in the
  get_supported_precisions in nodes/kernels/aarch64
- Add the EltwiseSqrt entry in the aarch64 executors
  supported algorithms
- Add the ActivationType::Sqrt in the getPrimitiveType
  in activations

Closes: openvinotoolkit#24109

Signed-off-by: Nashez Zubair <[email protected]>
nashez added a commit to nashez/openvino that referenced this issue Oct 20, 2024
- Added a jit_sqrt_emitter derived class in
  aarch64/jit_eltwise_emitters
- Created entry Algorithm::EltwiseSqrt in the
  get_supported_precisions in nodes/kernels/aarch64
- Add the EltwiseSqrt entry in the aarch64 executors
  supported algorithms
- Add the ActivationType::Sqrt in the getPrimitiveType
  in activations

Closes: openvinotoolkit#24109

Signed-off-by: Nashez Zubair <[email protected]>
@mlukasze mlukasze moved this from Assigned to In Review in Good first issues Nov 6, 2024
nashez added a commit to nashez/openvino that referenced this issue Nov 24, 2024
- Added a jit_sqrt_emitter derived class in
  aarch64/jit_eltwise_emitters
- Created entry Algorithm::EltwiseSqrt in the
  get_supported_precisions in nodes/kernels/aarch64
- Add the EltwiseSqrt entry in the aarch64 executors
  supported algorithms
- Add the ActivationType::Sqrt in the getPrimitiveType
  in activations

Closes: openvinotoolkit#24109

Signed-off-by: Nashez Zubair <[email protected]>
nashez added a commit to nashez/openvino that referenced this issue Nov 26, 2024
- Added a jit_sqrt_emitter derived class in
  aarch64/jit_eltwise_emitters
- Created entry Algorithm::EltwiseSqrt in the
  get_supported_precisions in nodes/kernels/aarch64
- Add the EltwiseSqrt entry in the aarch64 executors
  supported algorithms
- Add the ActivationType::Sqrt in the getPrimitiveType
  in activations

Closes: openvinotoolkit#24109

Signed-off-by: Nashez Zubair <[email protected]>
nashez added a commit to nashez/openvino that referenced this issue Dec 13, 2024
- Added a jit_sqrt_emitter derived class in
  aarch64/jit_eltwise_emitters
- Created entry Algorithm::EltwiseSqrt in the
  get_supported_precisions in nodes/kernels/aarch64
- Add the EltwiseSqrt entry in the aarch64 executors
  supported algorithms
- Add the ActivationType::Sqrt in the getPrimitiveType
  in activations

Closes: openvinotoolkit#24109

Signed-off-by: Nashez Zubair <[email protected]>
@nashez
Copy link
Contributor

nashez commented Jan 8, 2025

@p-wysocki @eshoguli Please unassign this task from me as I am not getting time to work on it

@mlukasze mlukasze moved this from In Review to Contributors Needed in Good first issues Jan 8, 2025
@geeky33
Copy link
Contributor

geeky33 commented Jan 24, 2025

.take

Copy link
Contributor

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

@srinjoydutta03
Copy link
Contributor

Hi @a-sidorova, can you please assign this issue to me, I would like to work on it. Thank you :)

@geeky33
Copy link
Contributor

geeky33 commented Jan 29, 2025

Greetings,
I have been working on this issue and have solved it almost
Just facing issues in launching the testcases.

Have reverted to @a-sidorova ma'am for the same !
Thanks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category: CPU OpenVINO CPU plugin good first issue Good for newcomers no_stale Do not mark as stale platform: arm OpenVINO on ARM / ARM64
Projects
Status: In Review
6 participants