-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
[CPU] Implemented "jit_exp_emitter" #26974
[CPU] Implemented "jit_exp_emitter" #26974
Conversation
@IvanNovoselov could you take a look please? Thank you in advance |
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.
LGTM
Please note that we need to carefully validate both accuracy and performance for this PR.
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.
LGTM
The accuracy and performance validations are successfully passed. For more information, please see the mentioned ticket in the description. PR is ready to be merged 🚀 |
### Details: - *Previously, we used dnnl-injector for `Exp` op which require 2 `aux_vec_regs`. The snippets kernel have some pool of aux vec registers which can be used by emitters in their implementations. However, dnnl cannot work with user-provided aux registers and always spill them on stack while plugin emitters can do it. To avoid extra push-pop in Snippets kernel (it leads to performance degradations), we implemented own emitter for `Exp` with the same logic to have opportunity to pass free aux vec registers* - *Updated `jit_erf_emitter`: reused new `jit_exp_emitter` to compute exponent and now we work only with `vmm_dst` to avoid `vmm_src` data corruption (input registers must not be corrupted)* ### Tickets: - *155236*
Details:
Exp
op which require 2aux_vec_regs
. The snippets kernel have some pool of aux vec registers which can be used by emitters in their implementations. However, dnnl cannot work with user-provided aux registers and always spill them on stack while plugin emitters can do it. To avoid extra push-pop in Snippets kernel (it leads to performance degradations), we implemented own emitter forExp
with the same logic to have opportunity to pass free aux vec registersjit_erf_emitter
: reused newjit_exp_emitter
to compute exponent and now we work only withvmm_dst
to avoidvmm_src
data corruption (input registers must not be corrupted)Tickets: