Changes

Jump to: navigation, search

Winter 2022 SPO600 Project

2,251 bytes added, 15:28, 18 April 2022
Stage 1: Selection: Typo correction - intrinsicts -> intrinsics
[[Category:Fall 2021 Winter 2022 SPO600]][[SPO600 ]] is a project-based course. This semester, the project involves adding [[SVE2 ]] optimizations to an existing open-source software package.
== Part Stage 1: Selection ==
# Identify some candidate open-source packages for optimization. Recommendations:
# 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 intrinsictsintrinsics? 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.
<s>Due: Monday, March 21, 11:59 pm</s>
'''Due: Monday, March 28, 11:59 pm''' (revised) == Part Stage 2: Implementation ==
# Implement your planned changes.
# 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).
<s>Due: Monday, April 411, 11:59 pm (tentative)</s>
'''Due: Monday, April 18, 11:59 pm''' (Revised)
== Part Stage 3: <s>Upstreaming </s> Analysis ==<s>
# Get your changes into the upstream codebase, if applicable.
#* If this is not practical, prepare recommendations on future work with the package and SVE2
</s>
Due# Provide a detailed analysis of your solution. Include: Friday## A disassembly of the SVE2 code in your solution (regardless of whether it's there through autovectorization, inline assembly, or the use of the ACLE intrinsics). Explain in detail how the code works. (If you have used the autovectorizer, choose one or two places where SVE2 code was generated - you don't have to cover all of them).## Explain how you think the SVE2 code will perform compared to the original code, and why.## Show that the final version of the program works as well as the original version (e.g., process the same file with both programs and compare the output, April 22or otherwise test the operation of the program. Make sure that the SVE2 code gets used!).## Any other analysis that you think is useful. For example, 11you could choose some combination of these:59 pm ##* Show that your changes don't break the build or cause improper or slower operation on other platforms (like x86_64).##* If you used the autovectorizer, analyze some of the loops that were not vectorized and the reason(s) that they were not vectorized. Analyze whether it matters (for examples, vectorizing a trivial loop won't have much impact).##* Discuss how a version of the software could be built that would choose at runtime whether to use SVE2 instructions (if available) or not (if unavailable).##* Recommend the next steps that could/should be taken to continue your work (firmfor example, other functions/methods that should be optimized for SVE2).
 
If you were not successful in getting your selected program to build with SVE2 code:
# Explain why. Be detailed in your explaination, and include appropriate details including compiler output or other supporting evidence.
# Explain in detail how this could be remedied, or why it doesn't make sense. Analyze the potential benefits or disadvantages of adding SVE2 code to the program.
# Add any other analysis you think would be useful.
# Reflect on the process of doing this project, what parts (if any!) were interesting, and what skills or knowledge (if any!) you think you might be able to use in the future.
 
'''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 ===

Navigation menu