Skip to content
Snippets Groups Projects
Commit 3f2c18a8 authored by RafaeNoor's avatar RafaeNoor
Browse files

Adding README's to HPVM directories

parent 564bf1fd
No related branches found
No related tags found
No related merge requests found
## HPVM Repository Structure
The current directory consists of the following sub-directories and files:
- `benchmarks` : This directory contains the benchmarks for the HPVM compiler infrastructure.
- `cmake`: Contains `cmake` related files which define additional variables needed to build `HPVM`.
- `docs`: Contains the documentation for `HPVM` and its various sub-projects. We use `Sphinx` for generating the reference documentation. A deployed version of the documentation can be found at https://hpvm.readthedocs.io/en/latest/.
- `include`: This directory contains the C++ headers for the `HPVM` compiler infrastructure.
- `lib`: This directory contains the C++ source files for the `HPVM` compiler infrastructure.
- `llvm_patches`: This directory contains the modified `LLVM` source files as well as a script to patch the corresponding source files in the `LLVM` source tree to enable building `HPVM`.
- `projects`: This directory contains the various sub-projects within `HPVM` which make use of the core `HPVM` infrastructure.
- `scripts`: Contains the script to build and install `HPVM` , and other utilities.
- `test`: Contains the automated `llvm-lit` tests for the various transformation passes in `HPVM`.
- `tools`: This directory contains the definition of various user-facing tools in `HPVM`.
- `env.yaml`: Defines the `Python` dependencies needed to support the `HPVM` Tensor Extensions.
- `install.sh`: Entry point script to build and install `HPVM`.
- `set_paths.sh`: Defines the various environment variables needed to build `HPVM` as well as it's sub-projects.
- `setup_environment.sh`: The script sets up the environment to use the `HPVM2FPGA` tool on Intel VLAB.
## HPVM Include
This directory contains the C++ header files for the `HPVM`infrastruture. This are divided into the following categories:
- `CoreHPVM`: Consists of the common Code Generation files used by the `HPVM` backend targets. Additionally, it defines various utilities which can be used within the specific target backend passes.
- `IRCodeGen`: Defines the transformation passes which generate the `HPVM` IR and Dataflow graph representation from `LLVM` bitcode files written using `HPVM-C`.
- `SupportHPVM`: Provides various utilities needed by the various `HPVM` transformation passes including a `DFG` Tree Traversal class.
- `Transforms`: Defines the transformation passes which perform either DFG to DFG transformations, or transformations on `LLVM-IR`.
## HPVM Lib
This directory contains the C++ source files for the `HPVM`infrastruture. This are divided into the following categories:
- `CoreHPVM`: Consists of the common Code Generation files used by the `HPVM` backend targets. Additionally, it defines various utilities which can be used within the specific target backend passes.
- `IRCodeGen`: Defines the transformation passes which generate the `HPVM` IR and Dataflow graph representation from `LLVM` bitcode files written using `HPVM-C`.
- `Targets`: Contains the instances of the specific backend targets `HPVM` compiles to.
- `Transforms`: Defines the transformation passes which perform either DFG to DFG transformations, or transformations on `LLVM-IR`.
## HPVM Projects
This directory contains the subdirectories for `HPVM` sub-projects which are built on top the the `HPVM` compiler infrastructure. They consist of:
- `hetero-c++`: A high level parallel dialect of C/C++ which describes hierarchical Task-level and Data-level parallelism. It compiles through `HPVM` to target `CPU`, `GPU` and the `FPGA`.
- `hpvm-profiler`: Defines the python package for profiling `HPVM` approximation configurations for the `HPVM` Tensor Extensions.
- `hpvm-rt`: Defines the `HPVM` runtime which manages the execution of `HPVM` programs on heterogeneous compute devices.
- `keras`: Defines the `keras` frontend for `HPVM` Tensor Extensions which compiles neural network models through `HPVM`.
- `llvm-ocl`: Tool to generate the `OpenCL` kernel file from `LLVM` bitcode. This is used by the `GPU` and `FPGA` benchmarks.
- `torch2hpvm`: Defines the `onnx` frontend for `HPVM` Tensor Extensions which compiles `PyTorch` nearal network models through `HPVM`.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment