On 3/14/23 12:54 PM, Deepti Gandluri wrote:

On Mon, Mar 13, 2023 at 8:38 AM Paul Jensen <pauljen...@chromium.org> wrote:

    >> For FMA, on x86, everything from Haswell (2013) onwards, and
    Piledriver (2012) onwards on  AMD support native FMA operations.
    On ARM64, Neon support implies FMA would be natively supported as
    well (Neon is the baseline on ARM64 for being able to generate any
    vector instructions). On Arm32, the vfma/vfms instructions are
    supported on Armv7 onwards. So most recent processors have native
    support for FMA.

    Am I correct in interpreting this to mean that for devices made in
    the last decade, there wouldn't be substantial exposed entropy for
    FMA?


Yes, that is correct. Though a small caveat is that even though the processor was released in 2013, consumer hardware does lag, so not strictly a decade, but I would guess close to it.


    >> Regarding the dot product instruction, the SDOT instruction is
    natively supported on Armv8.2+ , we don't currently implement the
    AVX2-VNNI implementation at this time as a newer extension and the
    inability to test it on our bots. More details are outlined in
    this issue under "How does behavior differ across processors?".

    The "How does behavior differ across processors?" section lists
    three different options for dot products. Which option is Chrome
    pursuing?  Do you know how much entropy is exposed here?


On x86/64, we use the lowerings for "x86/x86-64 processors with AVX instruction set", so we don't support the most optimal lowering at this time (though we are experimenting with them for prototyping/benchmarking). On ARM64, we are using the "ARM64 processors with Dot Product extension" option which is supported from ARMv8.2+. This is available in all the newer Pixel Phones (2018 onwards), and on the ARM64 based M1/M2 Macbooks. The older android phones, and ARM Chromebooks do not have native hardware support for Dot product instructions. The reason we decided to support this for the newer hardware was a between ~2-4x performance speedup (over existing Wasm+SIMD) for benchmarks that are sensitive to this <https://docs.google.com/presentation/d/1xlyO1ly2Fbo2Up5ZuV_BTSwiNpCwPygag09XQRjclSA/edit#slide=id.g1fee95a4c4f_0_0>.
Thanks for the answers here, Deepti. Much appreciated. I'm somewhat out of my depth here, admittedly, but don't see anything objectionable.

Thanks,
Deepti


    On Friday, March 10, 2023 at 2:39:03 AM UTC-5 Deepti Gandluri wrote:

        Pasting, and responding to entropy questions from the previous
        thread:

        >> For most of the exposed entropy, we already expose this via
        the User-Agent string, or the Arch UA Client Hint. Can you say
        more about "Differences between hardware that has native FMA
        support, and hardware that does not." and "whether the Dot
        product extension is supported in the most optimal codegen" -
        any idea what the distributions would look there there?

        For FMA, on x86, everything from Haswell (2013) onwards, and
        Piledriver (2012) onwards on  AMD support native FMA
        operations. On ARM64, Neon support implies FMA would be
        natively supported as well (Neon is the baseline on ARM64 for
        being able to generate any vector instructions). On Arm32, the
        vfma/vfms instructions are supported on Armv7 onwards. So most
        recent processors have native support for FMA.

        Regarding the dot product instruction, the SDOT instruction is
        natively supported on Armv8.2+ , we don't currently implement
        the AVX2-VNNI implementation at this time as a newer extension
        and the inability to test it on our bots. More details are
        outlined in this issue
        <https://github.com/WebAssembly/relaxed-simd/issues/52> under
        "How does behavior differ across processors?".

        >> As to compat, "code compiled for one browser works
        differently on a different browser" - this sounds a little bit
        scary! Do we have any ideas on how to minimize (I assume
        preventing isn't a reality) this outcome?

        The proposal tries to minimize this by being very prescriptive
        of optimal instruction sequences, for consistent outcome.
        While we expect browsers engines to use this set of
        instructions in their code generation, loosening the
        determinism means that we don't have a way to necessarily
        guarantee that.

        Thanks,
        Deepti


        On Thu, Mar 9, 2023 at 11:06 PM Deepti Gandluri
        <gdee...@chromium.org> wrote:


                    Contact emails


                    gdee...@chromium.org, z...@chromium.org,
                    thiba...@chromium.org


                    Explainer


                    
https://github.com/WebAssembly/relaxed-simd/blob/main/proposals/relaxed-simd/Overview.md


                    Specification


                    
https://github.com/WebAssembly/relaxed-simd/tree/main/document


                    Summary


                    Relaxed SIMD extends the existing SIMD proposal to
                    introduce vector instructions that relax the
                    strict determinism constraints of portable SIMD to
                    take better advantage of the underlying hardware.
                    The operations introduced in this proposal take
                    advantage of widely available instruction sets to
                    accelerate compute workloads.


                    Blink component


                    Blink>JavaScript>WebAssembly
                    
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EJavaScript%3EWebAssembly>


                    TAG review


                    Not required as per:
                    https://v8.dev/docs/feature-launch-process. This
                    introduces an additional set of vector operations
                    to WebAssembly, and makes no API changes.



                    Risks




                    Interoperability and Compatibility



                    /Gecko/: In development, enabled in nightly

                    /WebKit/: Neutral as per issue comment
                    
<https://github.com/WebKit/standards-positions/issues/4#issuecomment-1170364495>

                    /Web developers/: Strongly positive, Proposal in
                    Phase 3 in the WebAssembly CG the proposal was
                    incubated to address some of the developer/user
                    requests from the previous SIMD proposal.

                    /Other signals/: Proposal voted to a provisional
                    phase 4 as per meeting notes in the February 14th
                    CG meeting (notes:
                    
https://github.com/WebAssembly/meetings/blob/main/main/2023/CG-02-14.md).
                    The feature has consensus in the CG, but the vote
                    is provisional till the formal spec is up to date
                    (Tracking issue:
                    https://github.com/WebAssembly/relaxed-simd/issues/134,
                    PRs also in flight).


                    WebView application risks


                    Does this intent deprecate or change behavior of
                    existing APIs, such that it has potentially high
                    risk for Android WebView-based applications? No



                    Debuggability


                    Supported instructions are enabled in Liftoff, and
                    are visible to DevTools for debuggability.



                    Will this feature be supported on all six Blink
                    platforms (Windows, Mac, Linux, Chrome OS,
                    Android, and Android WebView)?


                    Yes


                    Is this feature fully tested by web-platform-tests
                    
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?


                    Not applicable, tested by WebAssembly spec tests


                    Flag name


                    V8: --wasm-relaxed-simd


                    Chrome: Features::kWebAssemblyRelaxedSimd


                    Requires code in //chrome?


                    False


                    Tracking bug


                    https://bugs.chromium.org/p/v8/issues/detail?id=12284


                    Estimated milestones


                    114


                    Anticipated spec changes


                    No anticipated spec changes, but some potential
                    for compat issues based on hardware, more details
                    in this Entropy.md
                    
<https://github.com/WebAssembly/relaxed-simd/blob/main/proposals/relaxed-simd/Entropy.md>,
                    and the linked issues.


                    Link to entry on the Chrome Platform Status


                    https://chromestatus.com/feature/5082417973952512

--
You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALi9WK_Kpj1OUOV4aC0AP9%3Db106hNwQMVxtvJDKe0M2c9pSxYQ%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALi9WK_Kpj1OUOV4aC0AP9%3Db106hNwQMVxtvJDKe0M2c9pSxYQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/cee242da-a5c1-0b95-b84c-8e272b7b2e2d%40chromium.org.

Reply via email to