pytorch
5a6ddbcc - Extending the Pytorch vec backend for SVE (ARM) (#119571)

Commit
275 days ago
Extending the Pytorch vec backend for SVE (ARM) (#119571) **Motivation:** In Pytorch, Aten vectorization supports multiple platforms, including x86 and Arm, as well as multiple data types. It provides a generic implementation of Vector (Vec) type that allows the programmer to write code packing various primitives (such as floats) within 256bit & 512bits registers. It can be extended to support other ISAs easily by adding more VecISA sub-classes. **Reference Link:** https://github.com/pytorch/pytorch/tree/main/aten/src/ATen/cpu/vec **This PR:** * Our goal with this contribution is to add support for SVE backend for Vec in the Aten vectorization for CPU backend which can be benefitted by any ARM architecture supported CPU's that supports SVE. * More about SVE ISA for ARM: [https://developer.arm.com/Architectures/Scalable Vector Extensions](https://developer.arm.com/Architectures/Scalable%20Vector%20Extensions) * We are using the ARM C Language Extensions for SVE (https://developer.arm.com/documentation/102699/0100/Optimizing-with-intrinsics ) to accelerate performance for various operators in the SVE backend for Vec. * Currently we are adding support only for SVE ISA with the vector length of 256 bits (SVE 256). In future, we plan to extend this SVE support for other vector lengths as well. Pull Request resolved: https://github.com/pytorch/pytorch/pull/119571 Approved by: https://github.com/malfet, https://github.com/snadampal Co-authored-by: Divya Kotadiya <divya.kotadiya@fujitsu.com>
Author
Committer
Parents
  • aten/src/ATen
    • File
      CMakeLists.txt
    • File
      Version.cpp
    • cpu/vec
      • File
        functional_base.h
      • File
        intrinsics.h
      • sve
        • File
          sve_helper.h
        • File
          vec_common_sve.h
        • File
          vec_double.h
        • File
          vec_float.h
        • File
          vec_int.h
        • File
          vec_qint.h
      • vec256
        • File
          vec256.h
        • File
          vec256_bfloat16.h
        • File
          vec256_qint.h
      • File
        vec_base.h
    • native
      • File
        BatchLinearAlgebraKernel.cpp
      • File
        DispatchStub.cpp
      • File
        DispatchStub.h
      • File
        SegmentReduce.cpp
      • cpu
        • File
          LerpKernel.cpp
      • mkl
        • File
          SpectralOps.cpp
      • sparse
        • File
          FlattenIndicesKernel.cpp
        • File
          SparseBinaryOpIntersectionKernel.cpp
      • transformers
        • File
          attention.cpp
    • test
      • File
        vec_test_all_types.cpp
      • File
        vec_test_all_types.h
  • cmake
    • File
      Codegen.cmake
    • Modules
      • File
        FindARM.cmake
  • File
    setup.py
  • torch/backends/cpu
    • File
      __init__.py