ARM-software / ComputeLibrary

The Compute Library is a set of computer vision and machine learning functions optimised for both Arm CPUs and GPUs using SIMD technologies.
MIT License
2.75k stars 767 forks source link

What is the difference between armv8.2-a and arm64-v8.2-a #1049

Closed ilya-lavrenov closed 1 year ago

ilya-lavrenov commented 1 year ago

See https://github.com/ARM-software/ComputeLibrary/releases/tag/v23.02.1

morgolock commented 1 year ago

Hi @ilya-lavrenov

Apologies for the confusion, there is no difference as both binaries are built for the same architecture v8.2-a and are both aarch64. The files using armv8.2-a should really be arm64-v8.2-a. Moving forward any new binaries will use the arm64 prefix.

Hope this helps.

ilya-lavrenov commented 1 year ago

Hi @morgolock

Does it mean a list of architectures here also needs to be update to avoid confusion ?

https://github.com/ARM-software/ComputeLibrary/blob/d8bf9b53752a4f573120cf51b31055de8b3c7d29/SConstruct#L93-L94

Currently, it also mixes arm64-v8.2-a and armv8.2-a.

morgolock commented 1 year ago

Hi @ilya-lavrenov

The option -march=arm64-v8.2-a builds a 64 bit binary.

The intention with the option -march=armv8.2-a is to let the user to specify the estate and allow 32 bit builds when using arch=armv8.2-a estate=32

The prebuilt binaries in the release for armv8.2-a should have used the arm64 prefix because they are all aarch64 binaries.

Hope this helps.

ilya-lavrenov commented 1 year ago

arch=armv8.2-a estate=32

Could you please elaborate more or point to external documents where it's written why it can be useful? In what cases should I use this approach? I (maybe mistakenly) supposed that armv8 is always 64bits

Thanks, Ilya.

morgolock commented 1 year ago

Hi @ilya-lavrenov

Could you please elaborate more or point to external documents where it's written why it can be useful?

It depends on the specific use case, one benefit of an aarch32 binary is the reduced binary size since the instruction set is 32 bit.

I (maybe mistakenly) supposed that armv8 is always 64bits

You can build armv8a for 32 bit. For more information see:

Hope this helps.