Open main menu

CDOT Wiki β

Changes

Winter 2015 SPO600 Weekly Schedule

3,899 bytes added, 12:21, 29 August 2015
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)]]
|-
|-
|7||Feb 23||[[#Tuesday (Feb 24)|Assembly lab (Lab 5)]]||[[#Thursday (Feb 26)|Inline assembly lab and Course Projects]]||[[#Week 9 7 Deliverables|Blog about the Assembly Lab (Lab 5) and start project investigation.]]
|-style="background: #f0f0ff"
|-
|8||Mar 9||[[#Tuesday (Mar 10)|Project discussion, and Reading Reference Documentation.]]||[[#Thursday (Mar 12)|Project presentations - Stage 1]]||[[#Week 7 8 Deliverables|Blog about your project progress - this will be used to assign your 1st Project marks.]]
|-
|9||Mar 16||[[#Tuesday (Mar 17)|Upstreaming]]||[[#Thursday (Mar 19)|More on AssemblerSpinlocks and Tail Call Optimization]]||[[#Week 8 9 Deliverables|Blog about your project work.]]
|-
|10||Mar 23||[[#Tuesday (Mar 24)|More on AssemblerPortable Portable alternatives to Assembler]]||[[#Thursday (Mar 26)|Project Presentations - Stage 2]]||[[#Week 9 10 Deliverables|Blog about your project progress - this will be used to assign your 2nd Project Marks.]]
|-
|11||Mar 30||[[#Tuesday (Mar 31)|SIMDHack Session]](Professor will not be present)||[[#Thursday (Apr 2)|VectorizationSIMD]]||[[#Week 10 11 Deliverables|Blog about SIMD/vectorization and your project.]]
|-
|12||Apr 6||[[#Tuesday (Apr 7)|Discussion & Hack Session]]||[[#Thursday (Apr 9)|Discussion & Hack SessionVectorization]]||[[#Week 11 12 Deliverables|Blog about your work.]]
|-
|13||Apr 13||[[#Tuesday (Apr 14)|Project Presentations - Stage 3]]||[[#Thursday (Apr 16)|Wrap-up Session]]||[[#Week 12 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%)
|}
=== 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: [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 (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.
<!--