1,885
edits
Changes
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|Project IntroductionExploring 64-bit Code]]||[[#Week 7 - Class II|Project SelectionSVE2]]||[[#Week 7 Deliverables|Lab Wrap up lab 5 & 5]]
|-
|Reading||Oct 24||style="background: #f0f0ff" colspan="3" align="center"|Reading Week
==== Lab 5 ====
* [https://wiki.cdot.senecacollege.ca/wiki/SPO600_Algorithm_Selection_Lab#Deliverables Algorithm Selection Lab] (Lab 5)
=== Week 6 Deliverables ===
* [https://wiki.cdot.senecacollege.ca/wiki/SPO600_Algorithm_Selection_LabLab 5] == Week 7 == === Week 7 - Class I === ==== Video ====* A summary video will be posted in reading week after editing === Week 7 - Class II === '''Please catch up on course material to this point. If you are fully caught up, you can start to take a look at SVE2:''' ==== 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 7 Deliverables ===* 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.
<!-- Memory System Design - Paging ; Memory - Cache/Numa ; Memory - Observability, Barriers -->
* 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 SVE2with strucure loads.*# An implementation using inline assembler for SVE2 with an interleaved factor table.*# (Future) 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 two four versions of the binary, -- one using implementation 1 (named <code>image_adjust1</code>) and one using implementation 2 (named <code>image_adjust2</code>), 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[121234][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!