Open main menu

CDOT Wiki β

Changes

Fall 2022 SPO600 Weekly Schedule

2,245 bytes added, 10:44, 5 November 2022
no edit summary
|6||Oct 10||[[#Week 6 - Class I|Mid-semester Sync Discussion]]||[[#Week 6 - Class II|Algorithm Selection / In-line Assembler / SIMD]]||[[#Week 6 Deliverables|Lab 5]]
|-
|7||Oct 17||[[#Week 7 - Class I|Exploring 64-bit Code]]||[[#Week 7 - Class II|SVE2]]||[[#Week 7 Deliverables|Wrap up lab 5 & 5]]
|-
|Reading||Oct 24||style="background: #f0f0ff" colspan="3" align="center"|Reading Week
|-
|8||Oct 31||[[#Week 8 - Class I|Optimization Trade-Offs / Algorithm Selection/ Inline Assembler / SIMD]]||[[#Week 8 - Class II|Scalable Vector Extensions (SVE/SVE2) via Inline Assemblerand C Intrinsics]]||[[#Week 8 Deliverables|Lab 6, October blog posts]]
|-
|9||Nov 7||[[#Week 9 - Class I|Project Discussion]]||[[#Week 9 - Class II|Demo/discussion of SVE2 Examples]]||[[#Week 9 Deliverables|Blog about project work]]
* Complete [[SPO600 64-bit Assembly Language Lab|Lab 4]] and [https://wiki.cdot.senecacollege.ca/wiki/SPO600_Algorithm_Selection_Lab Lab 5]
* Remember that October blogs are due soon.
 
== Week 8 ==
 
=== Week 8 - Class I ===
 
==== Video ====
* [https://web.microsoftstream.com/video/f67c0185-fc67-43fb-ac39-57cae26792a8 SIMD - Edited Summary Video]
 
=== Week 8 - Class II ===
 
==== Video ====
* [https://web.microsoftstream.com/video/a6b892e4-b408-4bc7-9fc1-d78e4efb8e0e SVE & SVE2 - Edited Summary Video]
 
==== Reading ====
* [[SVE2]]
 
==== SVE2 Demonstration ====
* Code available here: https://github.com/ctyler/sve2-test
* This is an implementation of a very simple program which takes an image file, adjusts the red/green/blue channels of that file, and then writes an output file. Each channel is adjusted by a factor in the range 0.0 to 2.0 (with saturation).
* The image adjustment is performed in the function <code>adjust_channels()</code> in the file <code>adjust_channels.c</code>. There are three implementations:
*# A basic (naive) implementation in C. Although this is a very basic implementation, it is potentially subject to autovectorization.
*# An implementation using inline assembler for SVE2 with strucure loads.
*# An implementation using inline assembler for SVE2 with an interleaved factor table.
*# An implementation using ACLE compile intrinsics.
* The implementation built is dependent on the value of the ADJUST_CHANNEL_IMPLEMENTATION macro.
* The provided Makefile will build four versions of the binary -- one using each of the four implementations -- and it will run through 3 tests with each binary. The tests use the input image file <code>tests/input/bree.jpg</code> (a picture of a cat) and place the output in the files <code>tests/output/bree[1234][abc].jpg</code>. The output files are processed with adjustment factors of 0.5/0.5/0.5, 1.0/1.0/1.0, and 2.0/2.0/2.0.
* '''Please examine, build, and test the code, compare the implementations, and note how it works - there are extensive comments in the code, especially for implementation 2.'''
* Your observations about the code might make a good blog post!
 
=== Week 8 Deliverables ====
* Continue your blogging
* Include blogging on SVE/SVE
* The second group of blog posts is due on or before this Sunday (November 6, 11:59 pm) and will be marked early next week.
<!-- Memory System Design - Paging ; Memory - Cache/Numa ; Memory - Observability, Barriers -->