Open main menu

CDOT Wiki β

Changes

SPO600 Vectorization Lab

9 bytes added, 23:35, 1 October 2017
Lab 6
{{Admon/lab|Purpose of this Lab|This lab is designed to explore single instruction/multiple data (SIMD) vectorization, and the auto-vectorization capabilities of the GCC compiler.}}
== Lab 6 5 ==
# Write a short program that creates two 1000-element integer arrays and fills them with random numbers, then sums those two arrays to a third array, and finally sums the third array to a long int and prints the result.
# Compile this program on [[SPO600 Servers#AArch64: aarchie|aarchie]] in such a way that the code is auto-vectorized.
# Annotate the emitted code (i.e., obtain a dissassembly via <code>objdump -d</code> and add comments to the instructions in <code>&lt;main&gt;</code> explaining what the code does).
# Review the vector instructions for AArch64. Find a way to scale an array of sound samples (see Lab 5) by a factor between 0.000-1.000 using SIMD. (Note: you may need to convert some data types). You DO NOT need to code this solution (but feel free if you want to!).