Not logged in. Login

Project Definitions

Students may choose from several project types for this course. All projects must involve existing open-source technologies that specifically target the use of SIMD instructions. Students may work alone or in groups.

There are three broad categories from which projects may be chosen.

  1. Pure LLVM: projects that involve the LLVM compiler infrastructure alone.
  2. Parabix+LLVM: projects that involve the Parabix plus LLVM framework.
  3. External: projects that involve some significant compiler technology outside of the Parabix or LLVM frameworks, such as the Intel SPMD Compiler.

Students who choose external projects must be able to demonstrate that they have background and experience that would allow them to work independently. Otherwise students should choose either a pure LLVM project or a Parabix+LLVM project.

Pure LLVM projects can be tackled in a semi-independent manner without dependencies on the current state of Parabix technologies. Choosing a pure LLVM project may be quite useful in developing a personal portfolio demonstrating your ability to do compiler and systems programming work to important companies that use LLVM technology.

Choosing a Parabix+LLVM project will offer the greatest chance to work together with the SFU Parabix research group. This could lead to follow-on opportunities to work as an NSERC Undergraduate Summer Research Assistant (USRA), for graduate study (MSc/PhD) or possibly even working for an SFU spin-off company.

Assignment 2: Project Proposal

Each group must prepare a project proposal for the course project with the following elements.

  • An introduction to the project
  • An *annotated* list of resources (bibliography, web links)
  • An introductory example showing the kind of translation that the project should achieve.
  • A web page/site having all of the above for presentation in class on Friday, February 9.

Pure LLVM Projects

There are many types of pure LLVM projects that could be tackled. Some of these may be motivated the SIMD processing needs of Parabix, but do not involve directly working with Parabix technology.

  • Language design for SIMD. Investigate language features or designs that are intended for SIMD operation.
  • IR transformation for SIMD. Investigate front-end IR passes (analyses and/or transformations) that support SIMD programming.
  • Back-end code-generation projects. These projects involve improving the SIMD code generation for some particular back-end such as x86/AVX2, Arm Neon, Power PC Altivec. You must improve the existing LLVM code generation for the target and show that it improves performance using some benchmark applications. (Note: icgrep could be used as a benchmark application)

Parabix + LLVM Projects

Updated Mon Jan. 29 2018, 08:44 by cameron.