Changes

Jump to: navigation, search

SPO600 Vectorization Lab

1,315 bytes added, 12:09, 1 December 2015
Created page with 'Category:SPO600 Labs {{Admon/lab|Purpose of this Lab|This lab is designed to explore single instruction/multiple data (SIMD) vectorization, and the auto-vectorization capabi…'
[[Category:SPO600 Labs]]

{{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 ==

# Write the shortest C program that can be vectorized by GCC.
# Compile this program on [[SPO600 Servers#AArch64|aarchie]].
# 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).
# '''Write a blog post discussing your findings'''. Include:
#* The source code
#* The compiler command line used to build the code
#* Your annotated dissassembly listing
#* Your reflections on the experience and the results


=== Resources ===
* [https://gcc.gnu.org/projects/tree-ssa/vectorization.html Auto-Vectorization in GCC] - Main project page for the GCC auto-vectorizer.
* [http://locklessinc.com/articles/vectorize/ Auto-vectorization with gcc 4.7] - An excellent discussion of the capabilities and limitations of the GCC auto-vectorizer, intrinsics for providing hints to GCC, and other code pattern changes that can improve results. Note that there has been some improvement in the auto-vectorizer since this article was written. '''This article is strongly recommended.'''

Navigation menu