Open main menu

CDOT Wiki β

Fall 2021 SPO600 Project

Revision as of 16:41, 6 December 2021 by Chris Tyler (talk | contribs) (Created page with "{{Chris Tyler Draft}}Category:Fall 2021 SPO600 SPO600 is a project-based course. Usually, this project involves optimization of some piece of open source software on a par...")
(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. Usually, this project involves optimization of some piece of open source software on a particular architecture (typically AArch64). However, at this point in time, there are few viable opportunities for AArch64 optimization of open source software packages, as ARMv8 optimization is largely complete and ARMv9 systems are not yet available for testing.

As a result, the SPO600 project for this semester includes three pieces:

  1. A practical experiment in benchmarking,
  2. An investigation into the state of AArch64 optimizations in an open source software package, and
  3. An analysis of, and recommendations for, future ARMv9 SVE/SVE2 in that same open source software package.

Part 1: Benchmarking

Task: Perform the Algorithm Selection Lab.

Due: Sunday, December 5, 11:59 pm

Part 2: Analysis of an AArch64 SIMD Optimization

Task: Select one of these open source packages:

  • (TBA)

Perform the following steps:

  1. Obtain the source code for the latest version of the software.
  2. Locate the AArch64 SIMD code within the software. Note that this might be assembler code in a .s or .S file, or it might be inline assembler, or it might be C compiler intrinsics, or it might be inline assembler or intrinsics set up through preprocessor macros.
  3. Examine the SIMD code for other architectures. Focus on x86_64 implementations, including SSE/SSE2 (128 bit), AVX (256 bit), and AVX512 (512 bit) SIMD extensions.
  4. Blog a thorough report of your review.

Due: Sunday, December 12 at midnight (11:59 pm).

Part 3: Recommendations for SVE/SVE2 Enhancements

ARMv9 is on the horizon, and it includes an improved SIMD implementation called Scalable Vector Extensions v2 (SVE2).

For the open source package that you selected in Part 2, blog a recommendation on how the software should be extended to support SVE2.

Due: Wednesday, December 15 at midnight (11:59 pm).