Open main menu

CDOT Wiki β

Winter 2022 SPO600 Project

Revision as of 11:06, 11 March 2022 by Chris Tyler (talk | contribs) (Created page with "{{Chris Tyler Draft}} Category:Fall 2021 SPO600 SPO600 is a project-based course. This semester, the project involves adding SVE2 optimizations to an existing open-source...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Important.png
This is a draft only!
It is still under construction and content may change. Do not rely on this information.

SPO600 is a project-based course. This semester, the project involves adding SVE2 optimizations to an existing open-source software package.

Part 1: Selection

  1. Identify some candidates packages for optimization. Recommendations:
    • Focus on library-level packages - these optimizations are often best applied at the library level rather than the application level
    • Look for packages that do processing on large data sets - multimedia (graphics, video, sound), cryptography, data analysis, and statistics are examples
    • Watch for packages that have existing SIMD implementations for other architectures, and/or NEON and "Advanced SIMD" implementations for Arm - the fact that these packages have SIMD implementations mean that they benefit from this type of optimization
  2. Find the SIMD implementations in these packages.
    • Verify that they do not already contain SVE / SVE2 optimizations (unless these can be further extended)
  3. Create a strategy for your changes
    • What portion(s) of the code will you optimize for SVE2? (Choose something small to start!)
    • Will you use autovectorization, inline assembler, or intrinsicts? Is this approach compatible with what the community is already using for other SIMD implementations?
  4. Note how the community accepts contributions and engage with the community to discuss your proposed work.

Due: Monday, March 21, 11:59 pm

Part 2: Implementation

  1. Implement your planned changes.
  2. Verify that your changes build correctly and work properly.
  3. Verify that your changes do not cause a regression on other platforms (for example, that operation on other platforms is not broken or slowed down by your changes).

Due: Monday, April 4, 11:59 pm (tentative)

Part 3: Upstreaming

  1. Get your changes into the upstream codebase, if applicable.
    • If this is not practical, prepare recommendations on future work with the package and SVE2

Due: Friday, April 22, 11:59 pm (firm)

Resources

Searching Code
SVE2

Basic overview of SVE2 - broadly applicable

More detailed documentation - optional/may be useful