Changes

Jump to: navigation, search

Winter 2020 SPO600 Weekly Schedule

4,379 bytes added, 14:30, 31 August 2021
no edit summary
[[Category:Winter 2020 SPO600]]
This is the schedule and main index page for the [[SPO600]] ''Software Portability and Optimization'' course for Winter 2020.
<!-- {{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.}}-->
<!-- {{Admon/important|Content being Updated|This page is in the process of being updated from a previous semester's content. It is not yet updated for the current semester. Do not rely on the accuracy of this information until this warning is removed.}} -->
<!-- {{Admon/obsolete|[[Current SPO600 Weekly Schedule]]}} -->
== Schedule Summary Table ==
|Switchover||Mar 16||style="background: #f0f0ff" colspan="5" align="center"|Online Switchover Week
|-
|10||Mar 23||[[#Week 10 - Class I|Online Startup / Project Stage 1]]||[[#Week 10 - Class II|ProfilingReview for Stage 1]]||[[#Week 10 Deliverables|Project Stage 1 DueBlogging]]
|-
|11||Mar 30||[[#Week 11 - Class I|<span style="background: #ffff00;">Quiz</span> / Profiling]]||[[#Week 11 - Class II|Memory Ordering, Synchronization, and BarriersSIMD Part 1 - Autovectorization]]||[[#Week 11 Deliverables|Project WorkStage 1 due April 1, 11:59 pm / Blog about your project as you start Stage 2]]
|-
|12||Apr 06||[[#Week 12 - Class I|Project DiscussionSIMD Part 2 - Intrinsics and Inline Assembler]]||style="background:#f0f0ff"|Good Friday Holiday||[[#Week 12 Deliverables|Project Stage 2 due]]
|-
|13||Apr 13||[[#Week 13 - Class I|<span style="background: #ffff00;">Quiz</span> / Project Discussion]]||[[#Week 13 - Class II|Wrap-up Discussion]]||[[#Week 13 Deliverables|Project Stage 3 dueMonday, April 20, 11:59 pm (Firm!)]]
|-
|}
* [[SPO600 Algorithm Selection Lab]] (Lab 6)
=== Week 9 - Class II ===[[Winter 2020 SPO600 Project|project]]
* [[Compiler Optimizations]]
* SIMD and Vectorization
=== Week 10 - Class II ===
(Coming soon)* [https://youtu.be/M-5IizEwkfY Video - March 27: Review of material for Stage 1]* Stage 1 due date '''extended''' to Wednesday, April 1, 11:59 pm
=== Week 10 - Deliverables ===
* Blog about your [[Winter 2020 SPO600 Project|project]]. Project Stage 1 is duenext Wednesday. == Week 11 == === Week 11 - Class I ===* Quiz #4 - Online in Blackboard* '''Optional video:''' [https://youtu.be/CdyERanIxmI Building Software] - This video provides a review of building an open-source software package from either a source archive (zip or tarball) or from a code repository (such as a <code>git</code> repository).* [https://youtu.be/Hip1KtYZKE0 Video - March 30: Profiling Software]** Profiling with <code>gprof</code> and <code>perf</code> === Week 11 - Class II ===* [https://youtu.be/EIPbufXhiQs Video - April 3: SIMD and Auto-vectorization]* SIMD-Autovectorization Resources** [https://gcc.gnu.org/projects/tree-ssa/vectorization.html Auto-Vectorization in GCC] - Main project page for the GCC auto-vectorizer.** [http://locklessinc.com/articles/vectorize/ Auto-vectorization with gcc 4.7] - An excellent discussion of the capabilities and limitations of the GCC auto-vectorizer, intrinsics for providing hints to GCC, and you other code pattern changes that can also blog improve results. Note that there has been some improvement in the auto-vectorizer since this article was written. '''This article is strongly recommended.'''** [https://software.intel.com/sites/default/files/8c/a9/CompilerAutovectorizationGuide.pdf Intel (Auto)Vectorization Tutorial] - this deals with the Intel compiler (ICC) but the general technical discussion is valid for other compilers such as gcc and llvm === Week 11 Deliverables ===* [[Winter 2020 SPO600 Project|Project Stage 1] due Wednesday, April 1 (yes, really) at 11:59 pm* Blog about your project as you continue into Stage 2 work ** March posts are due on Monday, April 6 at 11:59 pm. == Week 12 == === Week 12 - Class I ===* [https://youtu.be/76rtxPozPJI Video - April 6: SIMD, Inline Assembler, and Compiler Intrinsics]** [[Inline Assembly Language]]** [[Compiler Intrinsics]] * Retired SPO600 Labs - These labs are not being used this semester but may be useful for reference. The software in these labs was used in the video for this week.** [[SPO600 SIMD Lab]]** [[SPO600 Inline Assembler Lab]] === Week 12 - Class II ===* No class - Good Friday === Resources ======= Auto-vectorization ====* [https://gcc.gnu.org/projects/tree-ssa/vectorization.html Auto-Vectorization in GCC] - Main project page for the GCC auto-vectorizer.* [http://locklessinc.com/articles/vectorize/ Auto-vectorization with gcc 4.7] - An excellent discussion of the capabilities and limitations of the GCC auto-vectorizer, intrinsics for providing hints to GCC, and other code pattern changes that can improve results. Note that there has been some improvement in the auto-vectorizer since this article was written. '''This article is strongly recommended.'''* [https://software.intel.com/sites/default/files/8c/a9/CompilerAutovectorizationGuide.pdf Intel (Auto)Vectorization Tutorial] - this deals with the Intel compiler (ICC) but the general technical discussion is valid for other compilers such as you get underwaygcc and llvm==== Inline Assembly Language ====* [[Inline Assembly Language]]* [http://developer.arm.com ARM Developer Information Centre]** [https://developer.arm.com/products/architecture/a-profile/docs/den0024/a ARM Cortex-A Series Programmer’s Guide for ARMv8-A]* The ''short'' guide to the ARMv8 instruction set: [https://www.element14.com/community/servlet/JiveServlet/previewBody/41836-102-1-229511/ARM.Reference_Manual.pdf ARMv8 Instruction Set Overview] ("ARM ISA Overview")* The ''long'' guide to the ARMv8 instruction set: [https://developer.arm.com/docs/ddi0487/latest/arm-architecture-reference-manual-armv8-for-armv8-a-architecture-profile ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile] ("ARM ARM")==== C Intrinsics - AArch64 SIMD ====* [https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics ARM NEON Intrinsics Reference]* [https://gcc.gnu.org/onlinedocs/gcc/ARM-C-Language-Extensions-_0028ACLE_0029.html GCC ARM C Language Extensions] == Week 13 == === Week 13 - Class I ===* [https://youtu.be/GLzAVWW8dEo Video - April 16: Project Stage 3] === Week 13 - Class II ===* Wrap-up Session 
<BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/><BR/>

Navigation menu