Not logged in. Login

CMPT 479/980 Compiler Technology - SIMD Parallel Processing

Course Synopsis

The most significant changes to modern instruction set architecture are the deployment of additional single-instruction, multiple-data (SIMD) parallel programming capabilities. For example, recent Intel chips have recently incorporate AVX-512 technology for simultaneously processing 512 bits of data at a time, arranged as 8 64-bit doubles or long long integers, 16 32-bit floats or integers, 32 16-bit integers, 64 bytes or 512 bits. General purpose programming on GPUs can similarly exploit the SIMT (single-instruction, multiple thread) model. Parallel programming using such capabilities can dramatically increase software performance, but at a significant cost in programmer productivity. In order to increase both performance and productivity, new SIMD and SIMT programming facilities are needed to automate the generation of high-quality software. In this course, students will study the development of new parallel programming facilities implemented using the LLVM compiler infrastructure as well as the Parabix parallel bit stream technology developed at Simon Fraser University. Students will implement at least one significant compiler component using the LLVM and/or Parabix framework.

Course Structure

CMPT 479/980 is a combined undergraduate/graduate research seminar course. Grading is based on in-class participation including quizzes and exercises (50%) and a final project (50%). Graduate student projects have higher expectations, including both a 30-minute in-class presentation and a formal literature review as part of their final project submission.

Contact Info

  • Professor
    • Rob Cameron
    • email @sfu.ca: cameron
  • Teaching Assistant
    • Nigel Medforth
    • email @sfu.ca: nmedfort

Readings and Weekly Quizzes

  • There will be lightweight weekly quizzes each class based on assigned readings. Your best grades (dropping the two lowest grades) on these quizzes count 40% of your class participation mark (that, is 20% of the total mark).

SIMD Resources

Several reading assignments will be given based on the following text:

Christopher J. Hughes, "Single-Instruction Multiple-Data Execution," in Margaret Martonosi (ed.), Synthesis Lectures on Computer Architecture, Springer, 2015. Available online through the SFU Library.

SIMD Instruction Reference for Intel: Intel Intrinsics Guide

LLVM Resources

Reading/Quiz Schedule

  • Hughes, Chapter 2 up to and including section 2.3 - Quiz Wednesday May 15 2024
  • Sampson, LLVM for Grad Students - Quiz Wednesday May 22 2024

Assignments

Course Project Overview

Project Definition

All students are expected to participate in a course project involving SIMD Compiler technology within an existing open source framework. Students will be expected to make a significant, high-quality source-code contribution to the overall framework together with a set of test cases that demonstrate the contribution.

Possible projects include:

  • Target-independent SIMD abstractions implemented as LLVM IR transformation passes (LLVM framework).
  • Target-dependent SIMD code-generation for a particular back-end instruction set architecture (LLVM framework).
  • Contributions or novel applications of the Parabix-LLVM framework based on bitwise data parallelism.
  • Contributions to the Intel SPMD Compiler.

AVX-512 Machines

CSIL CPU Servers

Course Notes

Updated Wed May 15 2024, 18:40 by cameron.