Changes

Jump to: navigation, search

SPO600 SIMD Lab

181 bytes added, 23:24, 6 April 2020
no edit summary
[[Category:SPO600 Labs- Retired]]{{Admon/lab|Purpose of this Lab|In this lab, you will investigate the use of SIMD instructions in software, using auto-vectorization, inline assembler, and C intrinsics.}} == Lab 5 =={{Admon/important|This lab is not used in the current semester.|Please refer to the other labs in the [[:Category:SPO600 Labs|SPO600 Labs]] category.}}
=== Resources ===
=== Optional ===
Extend the inline and C intrinsics versions of the code to operate correctly on either both AArch64 or and x86_64 systems. Use preprocessor directives to select the correct assembler/intrinsic code for each platform (for example, <code>#ifdef __ARM_ARCH_ISA_A64</code> to select the AARCH64 code) -- use <code>cpp -dM /dev/null</code> to see all of the pre-defined macros for a given platform. Include equivalent C code so that if the program is compiled on a system which is not AArch64 and not x86_64, it will still work.
=== Deliverables ===
{{Admon/tip|Benchmarking is Hard|Accurate benchmarking (performance testing) requires careful, methodical, accurate work. Take the time to make sure that your test results are repeatable, accurately reflect ''only'' the time taken for volume scaling, and of sufficient magnitude to enable comparisons. <u>Do not</u> compare results between machines, but <u>do</u> compare different algorithms on the same machine. In order to have this lab accepted as complete, you will need to post reasonable test results.}}
Write up the lab on your blog. Make sure that the post makes sense to someone who does not know the course context -- write with enough background and detail that it makes sense to someone stumbling on to your blog post. Include answers to all of the questions marked with Q: in the source files, and include a detailed and accurate performance summary of the five different volume scaling approaches taken so far (Algorithms 0, 1, and 3 2 from the Algorithm Selection lab, and the two implementations from this lab: inline assembler and intrinsics). Reflect on the advantages and disadvantages of the various approaches.

Navigation menu