Skip to content

Latest commit

 

History

History
52 lines (23 loc) · 1.7 KB

File metadata and controls

52 lines (23 loc) · 1.7 KB

Definitions + Key Concepts:

  • Kernel: function that uses GPU to execute

  • Host: CPU

  • Intermediate Representation (IR): Structure that determines how code is executed by a compiler

  • LLVM: open-source compiler used to convert CUDA source code into IR's

  • RISC-V: open source architecture this project aims to support

  • Wrapper Code: provides additional functionality to (reword)

  • Object file: Contains bytecode that is generated by a compiler or assembler that needs to be linked together

  • Executable: File that helps all code files be fully linked to one another

  • Memory Declarations: space for variables

  • Barriers: Sync Operation that ensures threads don’t interfere with each other and don’t affect execution of program

  • Warps: Group of 32 threads in NVIDIA CUDA framework used to parallel execute

  • Threads: Basic unit of execution; used in parallel computing platforms to run multiple operations at once and speed up performance

Below is the architectural diagram for our work, which is taking a CUDA program and making it compatible for RISC-V.

Image

In this diagram, we have 4 stages:

  1. Converting kernel and host CUDA source code into seperate IR's

  2. Taking the newly created IR and transforming it so it's compatible with Vortex

  3. Compiling the transformed IR’s into an Kernel Object file and a Host Object file

  4. Linking both object files into an executable binary

As seen in the diagram, CuPBoP:

  1. Helps transform the IR’s into ones that are compatible for RISC-V and generates wrapper code

  2. Has a run time library that helps link all files together