Abstract
dc:description.abstractCentral processing unit (CPU) code performance is highly dependent on instruction and data parallelism. Instruction parallelism is largely focused on CPU cores and threading, while data parallelism relies on specialized vectors. Single-instruction, multiple-data (SIMD) vectors allow for a single instruction to be executed on multiple data elements in parallel, and is very fine-grained compared to instruction parallelism. This project focuses on data parallelism. One way to increase performance on CPU is to rearrange code to allow for more vectorization, such as considering striding of array accesses. The polyhedral model of computation describes a series of operations and abstractions for manipulating code without violating dependencies or correctness, but is more aggressive than typical compiler optimizations. This paper describes the process of applying the polyhedral model to the Julia language with the acceleration of code via increased vectorization and memory locality in mind. It succeeds as a tool for both experienced developers and those new to Julia and allows for more simple analysis and generation of algorithms for new and existing code.
Degree
thesis:*- Name thesis:degree_name
- Master
- Department dc:contributor.department
- Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
- Grantor dc:publisher
- Massachusetts Institute of Technology
- Year dc:date.issued
- 2021
Author and committee
dc:creator, dc:contributor.*- Author dc:creator
-
- Julian, Meredith
- Advisor dc:contributor.advisor
-
- Edelman, Alan
Rights
dc:rights- Statement dc:rights
-
- In Copyright - Educational Use Permitted
- Copyright MIT
- Licence dc:rights.uri
Identifiers
dc:identifier.*- Handle dc:identifier.uri
- https://hdl.handle.net/1721.1/139203
- OAI identifier oai:identifier
- oai:dspace.mit.edu:1721.1/139203