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

Change the elementwise broadcasting contract from graph to kernel #3894

Closed
wants to merge 1 commit into from

Commits on Jun 7, 2024

  1. Change the elementwise broadcasting contract from graph to kernel

    Summary:
    Currently, there is a graph level pass to handle limited broadcasting of elementwise ops if the input tensors are not of the same size.
    
    We move this responsibility down to the kernels with this diff, which is how ET and the portable ops do it. Ops of this kind are only `add`, `sub`, `mul` and `div` for now, but there will be more.
    
    We retain the implementations for the reference kernels, because we want to avoid linking the portable ops directly, which takes forever at compile time. We can also use a much smaller set of types (basically only `float`).
    
    We can remove a hack in the RNNT Joiner with this change, and run it natively. It takes a huge hit in performance, which will be fixed by getting broadcast-friendly kernels from Cadence.
    
    We finally remove the binop tests in `test_aten_ops.py`, which were also using strange types and had been on the chopping block for a while.
    
    Differential Revision: D58207691
    mcremon-meta authored and facebook-github-bot committed Jun 7, 2024
    Configuration menu
    Copy the full SHA
    d52c39f View commit details
    Browse the repository at this point in the history