Changes

Jump to: navigation, search

Winter 2016 SPO600 Weekly Schedule

5,774 bytes added, 12:20, 21 November 2016
no edit summary
[[Category:Winter 2016 SPO600]]
{{Chris Tyler Draft}}<!-- {{Admon/important|It's Alive!|This [[SPO600]] 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.obsolete}} -->
* Previous semester: [[Fall 2015 SPO600 Weekly Schedule]].
!Week!!Week of...!!width="28%"|Tuesday!!width="28%"|Friday!!width="28%"|Deliverables<br/>(Summary - click for details)
|-
|1||Jan 11||[[#Tuesday (Jan 12)|Introduction to Software Porting, Portability, Benchmarking, and Optimization / How is code accepted into an open source project? (Lab 1)]]||[[#Friday (Jan 15)|Overview of Working with Code and Building Software(Lab 2)]]||[[#Week 1 Deliverables|Set up accounts, and blog a comparison of code reviews in two communities (your conclusion to Lab 1)2.]]
|-
|2||Jan 18||[[#Tuesday (Jan 19)|Computer Architecture Overview]]||[[#Friday (Jan 22)|Assembly Lab (Lab 23)]]||[[#Week 2 Deliverables|Blog about the Assembly Code Review Lab (Lab 21)]]
|-
|3||Jan 25||[[#Tuesday (Jan 26)|Compiled C Assembly Lab (Lab 3)- continued]]||[[#Friday (Jan 29)|Software OptimizationCompiled C Lab (Lab 4)]]||[[#Week 3 Deliverables|Blog about the Assembly Lab (Lab 3) and Compiled C Lab (Lab 34)]]
|-
|4||Feb 1||[[#Tuesday (Feb 2)|Algorithm Selection Lab (Lab 4)Software Optimization]]||[[#Friday (Feb 5)|SIMD and Auto-Vectorization Algorithm Selection Lab (Lab 5)]]||[[#Week 4 Deliverables|Blog about the Algorithm Selection Lab (Lab 4) and the Auto-Vectorization Lab (Lab 5).]]
|-
|5||Feb 8|||[[#Tuesday (Feb 9)|Inline Assembler Algorithm Selection Lab (Lab 65)Continued]]||[[#Friday (Feb 12)|Memory Barriers SIMD and SynchronizationAuto-Vectorization (Lab 6)]]||[[#Week 5 Deliverables|Blog your Inline Assembler the Algorithm Selection Lab (Lab 5) and the Auto-Vectorization Lab (Lab 6) results.]]
|-
|6||Feb 15||[[#Tuesday (Feb 16)|Project OverviewMemory architecture]]||[[#Friday (Feb 19)|Project SelectionInline Assembler Lab (Lab 7)]]||[[#Week 6 Deliverables|Blog about your selected projectInline Assembler Lab (Lab 7).]]
|-
|7||Feb 22||[[#Tuesday (Feb 23)|Project StartupCourse Presentation Assignment]]||[[#Friday (Feb 26)|Project Stage I UpdatesStartup]]||[[#Week 7 Deliverables|Blog about your Stage I updatesselected presentation and project topics.]]
|-style="background: #f0f0ff"
|-
|8||Mar 7||style="background:#f0f0ff" colspan="2" align="center"|Linaro Connect - No classes. Prepare for your presentationand work on your project.||[[#Week 8 Deliverables|Prepare for your presentationand work on your project.]]
|-
|9||Mar 14||[[#Tuesday (Mar 15)|Presentations]]||[[#Friday (Mar 18)|Presentations]]||[[#Week 9 Deliverables|Blog about your presentationPresentation.]]
|-
|10||Mar 22||[[#Tuesday (Mar 23)|Project Stage II I Updates]]||[[style="background:#f0f0ff"|Good Friday (Mar 26)|Discussion & Hack Session]]- No Classes||[[#Week 10 Deliverables|Blog about your Stage II updatesI Update.]]
|-
|11||Mar 28||[[#Tuesday (Mar 29)|Guest LectureDiscussion & Hack Session]]||[[#Friday (Apr 1)|Discussion & Hack Session]]||[[#Week 11 Deliverables|Blog about your projectwork.]]
|-
|12||Apr 4||[[#Tuesday (Apr 5)|Discussion & Hack Session]]||[[#Friday (Apr 8)|Discussion & Hack SessionProject Stage II Updates]]||[[#Week 12 Deliverables|Blog about your projectStage II Update.]]
|-
|13||Apr 11||[[#Tuesday (Apr 12)|Project Stage III UpdatesWrap-Up Discussion]]||[[#Friday (Apr 15)|Wrap-up DiscussionProject Stage III Updates]]||[[#Week 13 Deliverables|Blog about your project, including the Stage III Update, and write a wrap-up post about the course.]]
|-
|-style="background: #f0f0ff"
|Exam Week||Dec 14Apr 18||colspan="3" align="center"|Exam Week - No exam in this course!
|}
|Quizzes||align="right"|10%||May be held during any class, usually at the start of class. A minimum of 5 one-page quizzes will be given. No make-up/retake option is offered if you miss a quiz. Lowest 3 scores will not be counted.
|-
|Labs||align="right"|10%||See deliverables column above. All labs must be submitted by April 21.
|-
|Project work||align="right"|60%||3 stages: 15% (TBAMarch 29) / 20% (TBAApril 10) / 25% (TBAApril 21)
|}
<!--
== Week 1 ==
=== Tuesday (Sep 8) === No class due to the '''Experience Seneca''' orientation program. === Friday (Sep 11Jan 12) ===
==== Introduction to the Problems ====
Note that the build time for a complex package can range up to hours or even days!
 
==== Course Projects ====
 
In this course, you will:
# Help develop a test framework for C compiler optoins.
# Select an open source software package.
# Determine the impact of various C compiler options on the selected software.
# Make recommendations for the C compiler options/flags to be used on the AArch64 architecture.
# Prepare a fix/patch for the software to set the recommended options when compiling on AArch64 and submit these changes upstream, OR report to upstream that they are already using the optimal flags.
==== General Course Information ====
* Background for the [[SPO600 Code Review Lab|Code Review Lab (Lab 1)]].
 
=== Friday (Jan 15) ===
 
* [[Overview of the Build and Release Process]]
*Working with Code
*# Getting Code
*#* In a tarball
*#* From git
*#** Git basics
*#* Working with other version control systems
*# Getting and Installing Build Dependencies
*#* Required tools
*#* Required libraries, headers, and modules
*# Building the Code
*#* Configuration tools (autotools, cmake)
*#* Make
*#* The compiler toolchain
*#** Preprocessor
*#** Compiler
*#** Assembler
*#** Linker
*#* Debug vs. Non-debug/Stripped binaries
*#* Installation Scripts
 
* Looking at How Distributions Package the Code
** Using fedpkg
 
* [[SPO600 Code Building Lab|Code Building Lab (Lab 2)]] as homework
=== Week 1 Deliverables ===
# Course setup:## Set up your [[SPO600 Communication Tools]] - in particular, set up a blog and add it to [http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT] (via the [[Planet CDOT Feed List]]).## Add yourself to the [[Fall 2015 Winter 2016 SPO600 Participants]] page (leave the projects columns blank).## Generate a [[SSH#Using_Public_Keys_with_SSH|pair of keys]] for [[SSH]] and email the public key to your professor.## Sign and return the [[Open Source Professional Option Student Agreement]].# Complete Labs## [[SPO600 Code Review Lab|Code Review Lab (Lab 1)]] (Due end of week 2)## [[SPO600 Code Building Lab|Code Building Lab (Lab 2)]] (Due end of week 1)# Optional (recommended): [[SPO600 Host Setup|Set up a personal Fedora system]].# Optional (recommended): Purchase an AArch64 development board (such as a [http://96boards.org 96Boards] HiKey). == Week 2 == === Tuesday (Jan 19) === * [[Computer Architecture]] overview (see also the [[:Category:Computer Architecture|Computer Architecture Category]]) === Friday (Jan 22) === * [[SPO600 Assembler Lab|Assembly language lab]] (lab 3) === Week 2 Deliverables ===* Blog your conclusion to the [[SPO600 Code Review Lab|Code Review Lab]] (Lab 1) == Week 3 == === Tuesday (Jan 26) === * Continue work on the [[SPO600 Assembler Lab|Assembly language lab]] (lab 3) === Friday (Jan 29) === * [[SPO600 Compiled C Lab|Compiled C lab]] (lab 4) === Week 3 Deliverables === * Blog about your [[SPO600 Assembler Lab|Assembly language lab]] (lab 3).* Blog about your [[SPO600 Compiled C Lab|Compiled C lab]] (lab 4) experience and results. Consider the optimizations and transformations that the compiler performed.* Remember that these posts (as all of your blog posts) will be marked both for communication (clarity, quality of writing (including grammar and spelling), formatting, use of links, completeness) and for content (lab completion and results). Your posts should contain both factual results as well as your reflections on the meaning of those results, the experience of performing the lab, and what you have learned.  '''Reminder:''' Blogs will be marked as they stand at the end of the month (Sunday). == Week 4 == === Tuesday (Feb 2) === Software Optimization* [[Compiler Optimizations]]* Algorithm Selection === Friday (Feb 5) === * [[SPO600 Algorithm Selection Lab|Algorithm Selection Lab]] (Lab 6) === Week 4 Deliverables === * Blog about your Lab 5 results. == Week 5 == === Tuesday (Feb 9) === * Finish the [[SPO600 Algorithm Selection Lab|Algorithm Selection Lab]]* Discussion of Benchmarking Challenges* Introduction to Vector Processing/SIMD === Friday (Feb 12) === * [[SPO600 Vectorization Lab|Vectorization Lab]] (Lab 6) ==== Week 5 Deliverables ==== * Blog your results for the [[SPO600 Algorithm Selection Lab|Algorithm Selection Lab]] (Lab 5)* Blog your results for the [[SPO600 Vectorization Lab|Vectorization Lab]] (Lab 6)* For each of the above, be sure to include links to your code, detailed results, and your reflection on the lab. == Week 6 == === Tuesday (Feb 16) ===* Discussion of Memory Architecture === Friday (Feb 19) ===* [[Inline Assembly Language]] -- often used for:*# Implementing a memory barrier*# Performing an [[Atomic Operation]]*# Gaining performance (by accessing processor features not exposed by the high-level language being used (C, C++, ...))* [[SPO600 Inline Assembler Lab|Inline Assembler Lab]] (Lab 7) === Week 6 Deliverables ===* Blog your Lab 7 results. == Week 7 == === Tuesday (Feb 23) ===* Discussion of [[Winter 2016 SPO600 Compiler Options Presentation|Course Presentation]] assignment === Friday (Feb 26) ===* Discussion of the [[Winter 2016 SPO600 Project|Course Project]] === Week 7 Deliverables ===* Blog about your selected Presentation and Project topics. == Week 8 == [http://connect.linaro.org/bkk16/|Linaro Connect] - No classes. === Week 8 Deliverables === * Prepare for your Presentation* Work on your Project* Blog about what you're doing! == Week 9 == === Tuesday (Mar 14) === * [[Winter 2016 SPO600 Compiler Options Presentation|Presentations]] === Friday (Mar 18) === * [[Winter 2016 SPO600 Compiler Options Presentation|Presentations]] === Week 9 Deliverables === * Blog about your Presentation, incorporating any discussion or feedback during the presentation. == Week 10 == === Tuesday (Mar 22) === * [[Winter 2016 SPO600 Project|Course Project]] - Stage I Updates === Week 10 Deliverables === * Blog your Stage I Updates. '''Important!''' - this will be used to assign your Stage I project mark! Include:** Which software package you are working on** Your experience building the software "out of the box" on x86_64 and AArch64 platforms** Baseline results (performance)** Which area of the software you will be working on and which approach you are going to take to optimizing the software...**# Improving the Build Instructions (e.g., compiler options), OR**# Changing the Software (substituting a different algorithm, or refactoring for better compiler optimization e.g., auto-vectorization), OR**# Adding Platform-Specific code for AArch64 == Week 11 == === Tuesday (Mar 29) === * Discussion & Hack Session === Thursday (Mar 31) === Reminder: '''Special Event:''' [https://www.eventbrite.ca/e/leadership-lunch-with-mike-shaver-engineer-director-for-facebook-tickets-23046621064 Leadership Lunch with Mike Shaver] === Friday (Apr 1) === * Discussion & Hack Session === Week 11 Deliverables === * Blog about your project work.  == Week 12 == === Tuesday (Apr 5) === * Discussion & Hack Session === Friday (Apr 8) === * Project Stage II Updates === Week 12 Deliverables === * Blog your Stage II Project Updates by '''Midnight, Sunday, Apr 10.''' Note that this will be used for your Stage II project mark (20%). == Week 13 == === Tuesday (Apr 12) === * Wrap-Up Discussion === Friday (Apr 15) ===
# Optional but recommended: [[SPO600 Host Setup|Set up a personal Fedora system]].# Optional but recommended: Purchase an AArch64 development board.* Stage III Project Updates
=== Week 13 Deliverables ===
* Blog your Stage III Project Updates by Midnight on Thursday, April 21. * Complete ALL your blogging for this course by Midnight on Thursday, April 21. Make sure that you have included all of the labs, your presentation, and your project work. Remember that there should be at least 1-2 posts per week. Your blogging from April 1-April 21 will be used for your April communication mark.  <!-- == Week 2 ==
=== Tuesday (Sep 15) ===
< !--
Working with the Code
* Getting Code
** In a tarball

Navigation menu