Changes

Jump to: navigation, search

Fall 2022 SPO600 Project

3,001 bytes added, 16:32, 9 December 2022
Stage 3
[[Category:Fall 2022 SPO600]]
This page describes the [[SPO600]] project in the Fall 2022 semester.
main.c # contains main() and possibly other functions
function.c # contains one function named foo()
The file <code>function.c</code> will be built three times, each time using the autovectorizer, targeting different SIMD implementations for aarch64 (advanced SIMD, SVE, and SVE2). The appropriate ifunc code will be inserted so that the correct build of the function (from <code>foo()function.c</code> function ) is executed based on the capabilities of the computer on which it runs.
== Limitations ==
# This tool only operates on aarch64 systems
# There are three targets of interest: machines with advanced SIMD, SVE, and SVE2 capabilities.
# There are only two input source files, one containing main (and optionally other functions) (<code>main.c</code>) and one containing a function to be optimized (<code>function.c</code>)
# Only <code>function.c</code> is built multiple times for different SIMD implementations
== Test Code ==
To test your solution, use the code available at https://github.com/ctyler/spo600-fall2022-project-test-code as the input. (Reminder: you can clone this to another system -- such as israel.cdot.systems -- by using the "git clone" command along with the URL that you can find on the green '''Code''' button on the repository web page. Alternatively, you can fork the repo on GitHub and then clone your fork). Note that your project should accept other input as well -- this code is just one example, provided for easy testing. == Open Source == Since this is an open source course, your code must be licensed under one of the [https://opensource.org/licenses Open Source Initiative approved licenses]. Select an appropriate license, and include it with your project. Note that it's important that any code from other sources that you include in your project must be under a compatible license. This is an individual project, but since we're working with open source, you're welcome to incorporate other open source code into your project, and you may also collaborate with other students. You must write a minimum of 30% of the original code in your project. To be clear: code from established libraries, modules, and frameworks, such as Python modules or C libraries, does not count as part of the "original code". Therefore, if your project has 400 lines of code in addition to 100,000 lines of code that are in standard/common libraries/modules/frameworks, then you must have written at least 30% of the 400 lines (not 30% of the 100,400 lines!). You '''must''' clearly identify which lines you wrote, and which lines were written by someone else. You '''must''' verify that you have permission/license to use any code not written by you, including libraries/modules/frameworks, which you include in your project, and you must appropriately credit the source of that code, provide a link/URL as appropriate, and confirm license compatibility with your chosen open source license. See the [https://en.wikipedia.org/wiki/License_compatibility Wikipedia article on License Compatibility] for an introduction to this topic.
== Project Stages ==
* Submit the implementation as one or more blog posts linked to your code hosted appropriately (recommendation: place it in an accessible git repository)
Due: <strike>Sunday, December 4, 11:59 pm</strike> Thursday, December 8, 12 noon
Mark: 20%
What is required:
* A Provide the final implementation of your project* This * The implementation must work** The implementation should not have any limitations beyond those listed in the [[#Limitations|Limitations]] section above* Bonus points will may be awarded if your project works well (Note: bonus marks are not applicable if your basic solution does not work properly!) and :** ... is not subject to some of the [[#Limitations|Limitations]] listed above. For example, your project could work on both aarch64 and x86_64 systems, or it could accept multiple function files. Up to 5% bonus is available for each limitation that you overcome. (Note: the quality of the implementation will be considered when assigning the bonus marks).* Bonus points will be awarded if your project * ... has additional useful features, such as notifying the user if autovectorization could not be applied to the code. Up to 5% bonus is available for each additional useful feature. (Note: the quality of the implementation, and usefulness of the feature, will be considered when assigning the bonus marks).* Provide clear documentation on what the project does and how to test it* Submit the implementation as one or more blog posts linked to your code hosted appropriately (recommendation: place it in an accessible git repository)** Include your reflections on the project, what you have learned, what you enjoyed, what you didn't enjoy, and whether or not you think that this type of tool (perhaps integrated into a compiler) would be useful to you in your future work
Due: Wednesday, December 14, 11:59 pm
Mark: 25%

Navigation menu