1,885
edits
Changes
no edit summary
[[Category:Winter 2015 SPO600]]
{{Admon/importantobsolete|It's Alive!|This [[Current SPO600Weekly Schedule]] weekly schedule will be updated as the course proceeds - dates and content are subject to change. The cells in the summary table will be linked to relevant resources and labs as the course progresses.}} For the Fall 2014 version of the weekly schedule, see [[Fall 2014 SPO600 Weekly Schedule]].
== Schedule Summary Table ==
|-
|3||Jan 26||[[#Tuesday (Jan 27)|Profiling: Finding the pain points (Lab 3)]]||[[#Thursday (Jan 29)|Computer architecture overview]]||[[#Week 3 Deliverables|Blog about the profiling results and pain points discovered (Lab 3)]]
|-
|4||Feb 2||[[#Tuesday (Feb 3)|Compiled C Lab (Lab 4)]]||[[#Thursday (Feb 5)|Compiler optimizations]]||[[#Week 4 Deliverables|Blog a commentary on the Compiled C Lab (Lab 34).]]
|-
|-
|7||Feb 23 ||[[#Tuesday (Feb 24)|Project presentations - Stage 1.Assembly lab (Lab 5)]]||[[#Thursday (Feb 26)|Prepare a presentation on a selected aspect of Inline assembly language.lab and Course Projects]]||[[#Week 6 7 Deliverables|Blog about your the Assembly Lab (Lab 5) and start project plans - this will be used to assign your 1st Project Marks. Be prepared to give your presentationinvestigation.]]
|-style="background: #f0f0ff"
|Study Week||Mar 2||colspan="3" align="center"|Study Week - No classes!Please work on your initial project investigation.
|-
|8||Mar 9||[[#Tuesday (Mar 10)|Assembly language presentationsProject discussion, and Reading Reference Documentation.]]||[[#Thursday (Mar 12)|Assembly language Project presentations- Stage 1]]||[[#Week 7 8 Deliverables|Blog about your assembly language presentationproject progress - this will be used to assign your 1st Project marks.]]
|-
|9||Mar 16||[[#Tuesday (Mar 17)|Assembly lab (Lab 5)Upstreaming]]||[[#Thursday (Mar 19)|Reading reference documentation (Spinlocks and Lab 5 Continued)Tail Call Optimization]]||[[#Week 9 Deliverables|Blog about the assembly lab (Lab 5)your project work.]]
|-
|10||Mar 23||[[#Tuesday (Mar 24)|Project Presentations - Stage 2Portable alternatives to Assembler]]||[[#Thursday (Mar 26)|UptreamingProject Presentations - Stage 2]]||[[#Week 8 10 Deliverables|Blog about your project progress - this will be used to assign your 2nd Project Marks.]]
|-
|11||Mar 30||[[#Tuesday (Mar 31)|Inline AssemblerHack Session]](Professor will not be present)||[[#Thursday (Apr 2)|Find inline assembler in 3 packages (Lab 6)SIMD]]||[[#Week 9 11 Deliverables|Blog about the assembler you found (Lab 6)SIMD/vectorization and your project.]]
|-
|12||Apr 6||[[#Tuesday (Apr 7)|Discussion & Hack Session]]||[[#Thursday (Apr 9)|Discussion & Hack SessionVectorization]]||[[#Week 10 12 Deliverables|Blog about your progresswork.]]
|-
|13||Apr 13||[[#Tuesday (Apr 14)|Project Presentations - Stage 3]]||[[#Thursday (Apr 16)|Wrap-up Session]]||[[#Week 11 13 Deliverables|Blog about your project progress - this will be used to assign your 3rd project marks.]]
|-
|Labs||align="right"|10%||See deliverables column above.
|-
|Project work||align="right"|60%||Feb 27 March 16 (15%), March 27 31 (20%), April 22 (25%)
|}
* Other profiling tools
** OProf, SystemTap, and others
* [[SPO600 Profiling Lab]] (Lab 3)
=== Thursday (Jan 29) ===
* [[Computer Architecture]] overview (see also the [[:Category:Computer Architecture|Computer Architecture Category]])
=== Week 3 Deliverables ===
* Complete and blog your conclusions to the [[SPO600 Profiling Lab|Profiling Lab (Lab 3)]].
== Week 4 ==
=== Tuesday (Feb 3) ===
* [[SPO600 Compiled C Lab|Compiled C Lab (Lab 4)]]
=== Thursday (Feb 5) ===
* [[Compiler Optimizations]]
=== Week 4 Deliverables ===
* Blog your [[SPO600 Compiled C Lab|Compiled C Lab (Lab 4)]] results. Be sure to include a reflective section on what you learned.
* Select your topic for the [[Winter 2015 SPO600 Platform Specific Code Presentation|Platform-Specific Code Presentation]].
== Week 5 ==
* Prepare your [[Winter 2015 SPO600 Platform Specific Code Presentation|Platform-Specific Code Presentation]].
=== Week 5 Deliverables ===
* Be ready to [[Winter 2015 SPO600 Platform Specific Code Presentation|present]].
== Week 6 ==
=== Tuesday (Feb 17) ===
* Introduction to the [http://www.96boards.org/products/hikey/ HiKey] board and the [http://www.96boards.org/ 96Boards] project.
* [[Winter 2015 SPO600 Platform Specific Code Presentation|Presentations on platform-specific code]]
=== Thursday (Feb 19) ===
* [[Winter 2015 SPO600 Platform Specific Code Presentation|Presentations on platform-specific code]]
=== Week 6 Deliverables ===
* Blog about your presentation.
== Week 7 ==
=== Tuesday (Feb 24) ===
* [[SPO600 Assembler Lab|Assembly language lab (Lab 5)]]
=== Thursday (Feb 26) ===
* Remaining [[Winter 2015 SPO600 Platform Specific Code Presentation|Presentations on platform-specific code]]
* [[Inline Assembly Language]]
* [[Winter 2015 SPO600 Project|Course Projects]]
=== Week 7 Deliverables ===
* Blog your conclusion to the [[SPO600 Assembler Lab|assembly language lab (Lab 5)]] - See the ''Deliverables'' section in the lab instructions for details on what to include in your blog post.
== Week 8 ==
=== Tuesday (Mar 10) ===
* Project discussion
** Discussion of project ideas and fine-tuning of project plans
** Next steps
** Addressing Problem Areas
* Accessing and Reading Reference Documentation
** AArch64 ISA
=== Thursday (Mar 12) ===
* Project presentations
** Provide a very short (2 minute) overview of your project. Include:
*** Which piece of software you are working on
*** What area of that software needs optimization/performance tuning
*** How you are going to perform the optimization/tuning (algorithm replacement, platform-specific code, removing platform-specific code, build options, and so forth)
*** Plans for the next step
*** Engagement with the upstream community
* Use this project presentation to tell the class what you're working on and incorporate feedback into your blog post
=== Week 8 Deliverables ===
* Blog about your project and plans, incorporating feedback from your presentation
* Add your project to the [[Winter 2015 SPO600 Participants|Participants and Project Table]].
== Week 9 ==
=== Tuesday (Mar 17) ===
* Upstreaming
** Git Discussion
** Creating a Patch
** Various open source community workflows
=== Thursday (Mar 19) ===* Spinlocks** The need for Atomics in Spinlocks** Using Intrinsics for Atomic Operations* Tail Call Optimization (TCO)** gcc will perform TCO at -O2 and higher** Important to ensure that gcc recognizes code patterns that permit TCO to be applied === Week 9 Deliverables ===* Blog at least once (and ideally more than once) about your Project** Frequent shorter posts are better than rare long ones** Aim to make steady progress on your project, a bit each day** Blog about your evolving project plan and the steps you're making along the way** Keep the work short, and focus on narrowing the scope of work as early as possible** Keep talking to the community == Week 10 == === Tuesday (Mar 24) ===* Discussion of GCC Intrinsics** Where to find documentation: [[SPO600 Profiling Lab]https://gcc.gnu.org/onlinedocs/ GCC Manual] ** __atomic vs __sync intrinsic families* Examination of Build Files** Differential analysis of successful and unsuccessfull build === Thursday (Mar 26) ===* Project Presentations - Stage 2** At this point, you should have a proposed patch that you're working to get upstream === Week 10 Deliverables ===* Blog posts about your project** Include information about your patch(es)** Include links to discussion about the patch(es) with the community (e.g., link to bug/issue tracker entries or email archives)** If you don't have patches and/or have not pushed them upstream yet, describe the state of your project and your plan to get changes upstream.* Blogs will be marked Monday for Stage 2 project work (20%) == Week 11 == === Tuesday (Mar 31) ===Your professor will be away. You are welcome to use the classroom for a project hacking time and collaboration with your colleagues. === Thursday (Apr 2) ===* Single Instruction / Multiple Data (SIMD)** Brief look at x86_64 & AArch64 implementations of SIMD === Week 11 Deliverables ===* Blog about your ongoing project work. Please post at least 1-2 entries per week. == Week 12 == === Tuesday (Apr 7) ===* Discussion & Hacking Session === Thursday (Apr 9) ===* Vectorization** Using Intrinsics** Using Auto-Vectorization === Week 12 Deliverables ===* Blog about your ongoing project work. Please post at least 1-2 entries per week.* You should have patches (code, makefiles, documentation, or tests) in the upstream review process at or before this point.* Blog about vectorization - specifically:** What -O level and/or options are needed to turn on the auto-vectorizer in GCC** At least three limitations -- conditions under which the vectorization will not be performed** The significance of alignment and non-overlapping pointers for vectorization == Week 13 == === Tuesday (Lab Apr 14) ===* Informal Project Presentations - Phase 3 === Thursday (Apr 16)===* Wrap-up Session
=== Week 13 Deliverables ===
* Blog about your ongoing project work. Your patches should be through the upstream review process.
* Final date for posting about your project: April 22.
<!--