-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Aryan softplus #24378
Aryan softplus #24378
Conversation
You implemented JIT emitter: good start, thanks! But how did you test it? I would like to suggest next implementation steps. Explore existing PR from Example Pull Requests section here: #24109, please.
Let me know if you still have any questions. |
Hello, sir I do not understand the acl_f32 primitive is used. and also how should Finish JIT emitter |
Hi @Aryan8912, you can use Don't ignore tests, please. Let me know if you still have any questions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good start, some comments
src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_eltwise_emitters.cpp
Outdated
Show resolved
Hide resolved
src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_eltwise_emitters.hpp
Outdated
Show resolved
Hide resolved
src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_eltwise_emitters.cpp
Outdated
Show resolved
Hide resolved
src/plugins/intel_cpu/src/emitters/plugin/aarch64/jit_eltwise_emitters.cpp
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comment about implementation
h->vldr(src.d, v0.d); | ||
h->vmul(dst.d, v0.d, v0.d); | ||
h->vcvt(dst.s, dst.d); | ||
h->vfma(dst.s, v0.s, vptrue, v1.s, dst.s); | ||
h->vmaxnm(dst.s, dst.s, vmmin.s); | ||
h->vcvt(dst.d, dst.s); | ||
h->vexp2(dst.d, dst.d); | ||
h->vadd(dst.d, dst.d, vone.d); | ||
h->vrcps(dst.d, dst.d); | ||
h->vrsqrts(dst.d, dst.d); | ||
h->vadd(dst.d, dst.d, vzero.d); | ||
h->vst1(dst.d, ptr[dst_reg]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- You don't need to load anything in
emitter
. By the main concept: everything has been loaded in vector registers already, use registers. - Inside emitter you can use only
in_vec_idxs
,out_vec_idxs
andaux_vec_idxs
vector registers (their indexes). - In
float
implementation useword
only. - Use instrucations from SIMD&FP Instructions from ARM64 instruction set. We don't support ARM32 in OpenVINO snippets.
Note, please, you can use PRs as example:
- Abs operation: [CPU] [ARM64] jit abs #23692
- Sigmoid operation, which reuses Exp emitter: [CPU] [ARM64] jit sigmoid #23065
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @eshoguli please tell me more details about this, I am busy with other things
hey @Aryan8912, will you have a time to finish this? |
This PR will be closed in a week because of 2 weeks of no activity. |
close : #24109