spo600:2024_winter_project
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
spo600:2024_winter_project [2024/03/05 17:45] – chris | spo600:2024_winter_project [2024/04/16 18:10] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 17: | Line 17: | ||
These are the specific tasks that we need to undertake: | These are the specific tasks that we need to undertake: | ||
- | ^ Name ^ Description ^ Priority | + | ^ Name ^ Description ^ Lead ^ |
- | | Command-line Parsing | Parse the GCC command line to pick up AFMV options | Required | + | | Command-line Parsing | Parse the GCC command line to pick up AFMV options | Muhammad Wajih Rajani |
- | | Version List Processing | Process the version list received from the command-line to validate the architectural features | Required | + | | Version List Processing | Process the version list received from the command-line to validate the architectural features | Cameron Coenjarts |
- | | arch= Arguments | The current GCC AArch64 FMV capability accepts versions that are identified by feature flags (such as " | + | | arch= Arguments | The current GCC AArch64 FMV capability accepts versions that are identified by feature flags (such as " |
- | | Apply FMV cloning to functions automatically | When the appropriate command-line options are provided, the compiler should automatically clone //all// functions, as if the target_clone attribute was specified. | Required | + | | Apply FMV cloning to functions automatically | When the appropriate command-line options are provided, the compiler should automatically clone //all// functions, as if the target_clone attribute was specified. | Travis Liu | |
- | | Produce an error message if AFMV and FMV are used together | Produce an error if the compiler is invoked with AFMV command-line options //and// there are FMV attributes specified in the code. | Desirable | + | | Produce an error message if AFMV and FMV are used together | Produce an error if the compiler is invoked with AFMV command-line options //and// there are FMV attributes specified in the code. | Phuong Ngan Huynh | |
- | | Prune Cloned Functions | Remove any AFMV-created clone functions that do not provide any significant benefit or differentiation. | Desirable (Required but could be added later | | + | | Prune Cloned Functions | Remove any AFMV-created clone functions that do not provide any significant benefit or differentiation. | Kristjan Punno | |
- | | Diagnostic Output | Provide diagnostic output (when activated by -fdump-...-... command-line options). | Desirable | + | | Diagnostic Output | Provide diagnostic output (when activated by -fdump-...-... command-line options). |Steven David Pillay| |
- | | Git Wrangler | Mangage the repository, including frequent rebasing. | Required | + | | Git Wrangler | Mangage the repository, including frequent rebasing. | Matthew De Napoli |
- | | Update Documentation | Update the existing GCC IFUNC and FMV documentation (all archs) | Desirable | + | | Update Documentation |
- | | Create AFMV Documentation | Create documentation for the AFMV feature. | Required | + | | Update Documentation 2| Update the existing ACLE documentation|Heavendeep Kaur Munjal| |
- | | Create Tests | Create a suite of tests for the AFMV capability. (This is in addition to individual tests that the various task owners will prepare). | Desirable (Strongly!) | + | | Create AFMV Documentation | Create documentation for the AFMV feature. | Mimi Dang | |
+ | | Create Tests | Create a suite of tests for the AFMV capability. (This is in addition to individual tests that the various task owners will prepare). |Rachit Chawla| | ||
- | ==== Project Stage 1 ==== | + | ===== Project Stage 1 ===== |
- | 1. Become familiar with the GCC build process. Build the current development version of GCC on AArch64 and x86 platforms. Get to know how long a full build takes, how to change the build options, and how to install a local (non-system, | + | 1. **Become familiar with the GCC build process.** Build the current development version of GCC on AArch64 and x86 platforms. Get to know how long a full build takes, how to change the build options, and how to install a local (non-system, |
- | 2. Select at least two tasks from the task list (above). For each task, identify: | + | 2. **Select at least two tasks from the task list (above).** For each task, identify: |
(a) the specific, relevant sections of the GCC code base (source files and line numbers), or for non-code tasks such as documentation, | (a) the specific, relevant sections of the GCC code base (source files and line numbers), or for non-code tasks such as documentation, | ||
(b) a detailed description of the work that needs to be performed to complete the task; | (b) a detailed description of the work that needs to be performed to complete the task; | ||
+ | 1 | ||
< | < | ||
Line 52: | Line 53: | ||
(h) a rough estimate of the amount of work involved in each task (in hours), and how you arrived at that estimate. | (h) a rough estimate of the amount of work involved in each task (in hours), and how you arrived at that estimate. | ||
- | 3. Of the tasks from step 2 above, prioritize your interest. Which task would you prefer to own? How confident are you that you will be able to complete the work? | + | 3. **Of the tasks from step 2 above, prioritize your interest.** Which task would you prefer to own? How confident are you that you will be able to complete the work? |
+ | |||
+ | 4. **Blog the above information.** | ||
+ | |||
+ | ==== Due Date ==== | ||
+ | |||
+ | * March 17 for Stage 1. | ||
+ | |||
+ | ===== Project Stage 2 ===== | ||
+ | |||
+ | 1. **Complete the task from the task table.** In order to avoid blocking on other tasks, perform the initial implementation as a stand-alone task which does not depend on any of the other tasks being performed (to the extent possible). For example, the Command-line Argument Processing would normally feed the Version List processing, which in turn would control the FMV Cloning of functions. In the initial stage, the command-line arguments should be parsed and stored into the appropriate locations. The Version List processing can be written in such a way that it processes hard-coded input value (or reads values from a file or other location to facilitate testing) so that this can be written without blocking (waiting) for the Command-line Argument Processing. Likewise, the initial implementation of the Version List processing can assume that AFMV is enabled for a couple of microarchitectures. In the next stage we will connect up the various tasks components so that they communicate their values effectively. | ||
+ | |||
+ | 2. Be prepared to discuss your task plan during the Friday, March 22 class. | ||
+ | |||
+ | 3. Attend the classes and be prepared to discuss your task as appropriate. | ||
- | 4. Blog the above information. | + | 4. **Blog about the process.** |
- | ===== Due Date ===== | + | ==== Due Date ==== |
- | * Target: March 10 for Stage 1. | + | * Tentative: April 5 for Stage 2. |
- | * We will discuss the date during the March 8 class. | + | |
spo600/2024_winter_project.1709660727.txt.gz · Last modified: 2024/04/16 18:10 (external edit)