Open main menu

CDOT Wiki β

Changes

Fall 2023 SPO600 Weekly Schedule

4,781 bytes added, 23 January
no edit summary
[[Category:Fall 2023 SPO600]]
This is the schedule and main index page for the [[SPO600]] ''Software Portability and Optimization'' course for Fall 2023.
<!-- {{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]]}} -->
|2||Sep 11||[[#Week 2 - Class I|Binary Representation of Data / Introduction to 6502 Assembly]]||[[#Week 2 - Class II|6502 Assembly]]||[[#Week 2 Deliverables|Lab 2]]
|-
|3||Sep 18||[[#Week 3 - Class I|6502 Math / Jumps, Branches, and Subroutines / Strings]]||[[#Week 3 - Class II|6502 String Input / Building Code: Make and Makefiles]]||[[#Week 3 Deliverables|Lab 3]]
|-
|4||Sep 25||[[#Week 4 - Class I|Building Code: Compiler Optimizations]]||[[#Week 4 - Class II|Compiler Options / Building Code: Compiler Options, Make and Makefiles / GNU Autotools/Automake]]||[[#Week 4 Deliverables|Lab 3, September blog posts]]
|-
|5||Oct 2||[[#Week 5 - Class I|Introduction to 64-bit Architectures and Assembly Language (x86_64 and AArch64)]]||[[#Week 5 - Class II|Memory on 64-bit Systems]]||[[#Week 5 Deliverables|Lab 4Blog]]
|-
|6||Oct 9||style="background: #f0f0ff"|(No class - Thanksgiving day)||[[#Week 6 - Class II|Algorithm Selection / In-line Assembler / SIMDProject Stage 1]]||[[#Week 6 Deliverables|Lab 5Work on Project Stage 1]]
|-
|7||Oct 16||[[#Week 7 - Class I|Exploring 64-bit Code]]||[[#Week 7 - Class II|SVE2Algorithm Selection / SIMD / Autovectorization]]||[[#Week 7 Deliverables|Wrap up lab 5Blog about Lab 4 and Project work]]
|-
|Reading||Oct 23||style="background: #f0f0ff" colspan="3" align="center"|Reading Week
|-
|8||Oct 30||[[#Week 8 - Class I|Optimization Trade-Offs / Algorithm Selection / Inline Assembler / SIMD]]||[[#Week 8 - Class II|Scalable Vector Extensions (SVESIMD /SVE2) via Inline Assembler and C Intrinsics/ SVE & SVE2]]||[[#Week 8 Deliverables|October blog postsLab 4]]
|-
|9||Nov 6||[[#Week 9 - Class I|GNU ifunc SVE & Project OverviewSVE2 / Compiler Options for Architecture Target]]||[[#Week 9 - Class II|Project DetailStage 2 Discussion]]||[[#Week 9 Deliverables|Blog about ifunc and your project work]]
|-
|10||Nov 13||[[#Week 10 - Class I|Project TipsMemory]]||[[#Week 10 - Class II|Advanced MemoryProfiling]]||[[#Week 10 Deliverables|Blog about project work]]
|-
|11||Nov 20||[[#Week 11 - Class I|Project Techniques]]||[[#Week 11 - Class II|Project Demo]]||[[#Week 11 Deliverables|Blog about project work]]
==== Video ====
* [6502 Math|https://web.microsoftstream.com/video/e0d37bd1-d296-4873-88b3-1d70dc89e9e76502 Math]
==== Reading ====
==== Video ====
* [6502 Strings https://web.microsoftstream.com/video/a4707dd6a4707Project Detaildd6-b0df-409b-8168-58ec21a06c1b6502 Strings] - This video crosses over with the last part of the Monday lecture, but adds some additional detail.* [6502 String Input https://web.microsoftstream.com/video/9caa5e8d-0f15-4b8b-9293-0151c82f77b16502 String Input] - How to create a custom input routine, plus a discussion of the Wordle example code* [https://web.microsoftstream.com/video/f22220d6-9c87-4d23-aaf8-95f681756c41 6502 Emulator Assembler Directives] - A short video on using the 'define' and 'dcb' directives* [https://web.microsoftstream.com/video/1775931c-b9eb-4b2a-a7bd-598d7d725853 6502 Example Code] - A short video on using the example code provided for the 6502 Emulator==== Lab 3 ====* [[6502 Math and Strings Lab]]
=== Week 3 Deliverables ===
# Complete [[6502 Math and Strings Lab|Lab 3]] and blog your results.  == Week 4 == === Week 4 - Class I ===* [[Compiler Optimizations]] === Week 4 - Class II ===* [[Make and Makefiles]] === Week 4 Deliverables ===* Finish [[6502 Math and Strings Lab|Lab 3]] and blog your results.* Finalize your September blog posts. They are due at 11:59 pm on September 30.  == Week 5 == === Week 5 - Class I === ==== Resources ====* [[Assembly Language ]]* [[ELF]] file format* [[X86_64 Register and Instruction Quick Start]]* [[Aarch64 Register and Instruction Quick Start]]* ARM 64-bit CPU Instruction Set and Software Developer Manuals* ARM Aarch64 documentation** [http://developer.arm.com/ ARM Developer Information Centre]*** [https://developer.arm.com/docs/den0024/latest 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")** [https://developer.arm.com/docs/ihi0055/latest/procedure-call-standard-for-the-arm-64-bit-architecture Procedure Call Standard for the ARM 64-bit Architecture (AArch64)]* x86_64 Documentation** [https://developer.amd.com/resources/developer-guides-manuals/ AMD Developer Guide and Manuals](see the AMD64 Architecture section, particularly the ''AMD64 Architecture Programmer’s Manual Volume 3: General Purpose and System Instructions'')** [http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html Intel Software Developers Manuals]* GAS Manual - Using as, The GNU Assembler: https://sourceware.org/binutils/docs/as/ <!-- ==== Lab 4 ====* [[SPO600 64-bit Assembly Language Lab]] (Lab 4) --> === Week 5 - Class II === ==== Video ====* [https://web.microsoftstream.com/video/1bcab47b-514a-4f23-bdd4-f73662a0673f Paged Memory Systems]* [https://web.microsoftstream.com/video/880fb0f8-1084-457a-92e0-80f04ad62463 Memory Alignment and Performance] <!-- ==== Lab 4 ====* [[SPO600 64-bit Assembly Language Lab]] (Lab 4)-->=== Week 5 Deliverables ===* Continue to blog == Week 6 == === Week 6 - Class I ===* No class - Thanksgiving Monday === Week 6 - Class II ===* [[Fall 2023 SPO600 Project]] === Week 6 Deliverables ===* Work on and blog about your [[Fall 2023 SPO600 Project|Project Stage 1]] == Week 7 == === Week 7 - Class I ===* Discussed and demonatrated building 64-bit assembly language software on x86_64 and AArch64 systems as well as disassembling compiled C code.* See [[SPO600 64-bit Assembly Language Lab]] (Lab 4) === Week 7 - Class II === ==== Video ====* [https://web.microsoftstream.com/video/f60b92c6-9db3-4f57-b0b9-7c35ea0c054f SIMD] - Single Instruction, Multiple Data === Week 7 Deliverables ===* Continue work on Project Stage 1 and start work on [[SPO600 64-bit Assembly Language Lab|Lab 4]]* Blog! == Week 8 == === Week 8 - Class I === * Discussion of Algorithm Selection for Optimization === Week 8 - Class II === * Discussion of SIMD, including SVE and SVE2** Demonstrated (not assigned - you can use this for reference but do not have to complete this lab): [[SPO600 SIMD Lab|SIMD Lab ]]* Discussion of ifunc (Indirect Functions)** Demonstrated ifunc example code from this GitHub repo: https://github.com/ctyler/ifunc-aarch64-demo** It is recommended that you build and become familiar with that code === Week 8 Deliverables === * Complete and blog about [[SPO600 64-bit Assembly Language Lab|Lab 4]] == Week 9 == === Week 9 - Class I === * Discussion of [[SVE2|Scalable Vector Extensions]]** Demonstrated SVE example code from this GitHub repo: https://github.com/ctyler/sve2-test** It is recommended that you build and become familiar with that code === Week 9 - Class II === * Discussion of [[Fall 2023 SPO600 Project#Stage 2|Project Stage 2]]  === Week 9 Deliverables ===* Work on and blog about your results.[[Fall 2023 SPO600 Project#Stage 2|Project Stage 2]] == Week 10 == === Week 10 - Class I ===* Discussion of Memory concepts === Week 10 - Class II ===* Discussion of [[Profiling]] === Week 10 Deliverables ===* Work on and blog about your Project Stage 2
<!--
==== Video ====
* [https://web.microsoftstream.com/video/30fa002e-9e3d-41f6-95db-36832a8a509c Edited Class ClassAdvanced Memory Summary Video]
==== Reading Resources ====
=== Week 5 - Class I ===
 
==== Video ====
* [https://web.microsoftstream.com/video/fe744d30-f947-433d-b9f3-f5284e6fb2ad Class Summary Video]
==== Resources ====