Open main menu

CDOT Wiki β

Changes

Winter 2022 SPO600 Project

2,647 bytes added, 10:06, 11 March 2022
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..."
{{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 software package.

=== Part 1: Selection ===

# 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
# Find the SIMD implementations in these packages.
#* Verify that they do not already contain SVE / SVE2 optimizations (unless these can be further extended)
# 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?
# 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 ===

# Implement your planned changes.
# Verify that your changes build correctly and work properly.
# 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 ===

# 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 =====
* [[https://web.microsoftstream.com/video/ad72567e-047d-4dda-9f24-0c525429c7d1 Video - Tips on Searching Codebases]]

===== SVE2 =====
Basic overview of SVE2 - broadly applicable
* [https://developer.arm.com/documentation/102340/0001/Introducing-SVE2 ARM Developer Center - Introduction to SVE2]

More detailed documentation - optional/may be useful
* [https://developer.arm.com/documentation/dai0548/latest ARM - SVE Programming Examples]
* [https://developer.arm.com/documentation/100987/0000/ ARM - Introduction to C Language Extensions for SVE2] - documents the C Compiler Intrinsics for SVE2