Changes

Jump to: navigation, search

Fall 2022 SPO600 Weekly Schedule

2,324 bytes added, 00:06, 13 November 2022
no edit summary
|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 Assembler and C Intrinsics]]||[[#Week 8 Deliverables|October blog posts]]
|-
|9||Nov 7||[[#Week 9 - Class I|iFunc & Project DiscussionOverview]]||[[#Week 9 - Class II|Demo/discussion of SVE2 ExamplesProject Detail]]||[[#Week 9 Deliverables|Blog about ifunc and your project work]]
|-
|10||Nov 14||[[#Week 10 - Class I|Project Discussion]]||[[#Week 10 - Class II|Memory Barriers]]||[[#Week 10 Deliverables|Blog about project work]]
==== Video ====
* A Video summary video will be posted in reading week after editing
=== Week 7 - Class II ===
==== SVE2 Demonstration ====
* Code available here: https://github.com/ctyler/sve2-test
** You can clone this to israel.cdot.systems with: <code>git clone https://github.com/ctyler/sve2-test.git</code>
* 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:
* 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) == Week 9 == === Week 9 - Class I === ==== Video ====* Will be posted after editing ==== iFunc ==== GNU iFunc is a facility for handling indirect functions. The basic premise is that you prototype the function to be called, add the <code>ifunc</code> attribute to that prototype, and provide the name of a resolver function. The resolver function is called at program initialization, and returns a pointer to the function to be executed when the function referenced in the prototype is called. The resolver typically picks one of several implementations based on the capabilities of the machine on which the code is running; for example, it could return a pointer to a non-SVE, SVE, or SVE2 implementation of a function based on cpu capabilities (on an Aarch64 system) or it could return a pointer to an SSE, SSE2, AVX, or AVX512 implementation (on an x86_64 system). There is a [https://github.com/ctyler/ifunc-aarch64-demo GitHub repository] available with example iFunc code -- please clone this to [[SPO600 Servers#AArch64:_israel.cdot.systems|israel.cdot.systems]] and build and test the code there. You should see different results if you run the output executable directly (<code>./ifunc-test</code>) and run it through the qemu-aarch64 tool, which will be marked early next weekemultate SVE2 capabilities (<code>qemu-aarch64 ./ifunc-test</code>). Make sure you understand how the code works. ==== Reading/Resources ==== * [https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Common-Function-Attributes.html#index-ifunc-function-attribute GNU iFunc attribute in GCC manual]* [https://sourceware.org/glibc/wiki/GNU_IFUNC iFunc on the glibc wiki] === Week 9 - Class II === ==== Video ====* [https://web.microsoftstream.com/video/edc09b0a-1a7f-45d1-a27e-7f4901bba03d Edited summary video] - '''Important!''' This video contains a detailed discussion of the requirements for the course project.** Project discussion starts at beginning of video** Demo of what the project needs to do (manually performing the same steps) starts at 0:27:47** Recap/summary of the demo starts around 1:02:05 ==== Project ====* [[Fall 2022 SPO600 Project]] === Week 9 Deliverables ===* Investigate the iFunc example code* Blog about your investigation* Start blogging about your project 
<!-- Memory System Design - Paging ; Memory - Cache/Numa ; Memory - Observability, Barriers -->

Navigation menu