Skip to content

[AArch64] How to enable Neon (instead of SVE) kernels? #928

Description

@banach-space

Hi Folks 👋🏻 ,

First of all, thank you for BLIS and all the surrounding work - it's such a great reference for all GEMM enthusiasts :)

My question might be quite easy to answer - is it possible to enable Neon kernels and use them instead of SVE on architectures that do implement SVE, e.g. Neoverse-v2?

I've tried forcing the configuration (e.g. with --force-version=armv8a (*)), but keep seeing this in the logs:

configure: configuration 'armsve' is registered.
configure: 'armsve' is defined as having the following sub-configurations:
configure:    armsve
configure: which collectively require the following kernels:
configure:    armsve
configure: checking sub-configurations:
configure:   'armsve' is registered...and exists.
configure: checking sub-configurations' requisite kernels:
configure:   'armsve' kernels...exist.

I haven't tried experimenting on non-SVE hardware yet. Before I attempt that, what should be my expectations? 😅

And just to avoid folks spending too much time on this - longer term I am much more interested in SVE, so if NEON support is limited, I will simply switch to SVE sooner.

Thank you,
-Andrzej

(*) I realise that docs make it clear that armv8a is not an available config:

Notice that while kernel sets usually correspond to a sub-configuration, they do not always. For example, while the `armv7a` and `armv8a` kernel sets are referenced in the example `config_registry` file, there do not exist any registered sub-configurations by those names. However, the kernel directories exist and the kernel sets appear in the definitions of a few `cortex` singleton families.
I tried some other alternatives as well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions