Investigate EIgen Performance Improvements for Tensorflow (understanding Neon intrinsics)

Description

Eigen is in need of some rework to more easily incorporate future improvements such as support for mixed precision. This card is for some preparatory work familiarising with Neon/SVE intrinsics and Eigen itself.

Activity

Krishnakumar Gopalakrishnan 
August 16, 2021 at 5:10 PM
(edited)

The resources used in understanding Neon intrinsics were the following:

  1. ARM Neoverse N1 software optimisation guide

  2. Neon instrinsics reference https://developer.arm.com/architectures/instruction-sets/intrinsics/?page=4&search=vadd

  3. ARM SIMD vector instructions set https://developer.arm.com/documentation/100076/0100/a64-instruction-set-reference/a64-simd-vector-instructions?lang=en

  4. Neon programmer’s guide https://developer.arm.com/documentation/den0018/a

  5. Optimising C code with Neon intrinics https://developer.arm.com/documentation/102467/0100

  6. Read the Neon introduction document https://developer.arm.com/documentation/102474/latest

  7. Details of auto-vectorisation for Neon https://developer.arm.com/documentation/102525/0100/Why-rely-on-the-compiler-for-auto-vectorization-

  8. Arm NEON programming quick reference https://community.arm.com/developer/tools-software/oss-platforms/b/android-blog/posts/arm-neon-programming-quick-reference

The Neon intrinsics examples on basic signal processing were tried on d05 colo machine on Linaro’s work centre.

Krishnakumar Gopalakrishnan 
August 16, 2021 at 4:00 PM

The main goal here was to understand NEON vectorisation instructions. The two options that are available to deploy are the actual SIMD instructions using assembly language instructions or using a functional C-API called NEON intrinsics, which allows calling the same instructions from within C++/C source code, and take advantage of its vectorisation capabilities.

Done

Details

Assignee

Reporter

Story Points

Due date

Original estimate

Time tracking

1w 3d logged

Sprint

Priority

Checklist

Sentry

Created July 12, 2021 at 12:39 AM
Updated August 16, 2021 at 8:30 PM
Resolved August 16, 2021 at 5:14 PM

Flag notifications