The following represents the required steps to port a regular C program into an HPVM program with HPVM-C. These steps are described at a high level; for more detail, please see `hpvm-cava </hpvm/benchmarks/general_benchmarks/hpvm-cava>`_ provided in `general benchmarks </hpvm/benchmarks/general_benchmarks>`_.
The following represents the required steps to port a regular C program into an HPVM program with HPVM-C. These steps are described at a high level; for more detail, please see `hpvm-cava <https://gitlab.engr.illinois.edu/llvm/hpvm-release/-/tree/main/hpvm/benchmarks/general_benchmarks/hpvm-cava>`_ provided in `general benchmarks <https://gitlab.engr.illinois.edu/llvm/hpvm-release/-/tree/main/hpvm/benchmarks/general_benchmarks>`_.
* Separate the computation that will become a kernel into its own (leaf node) function and add the attributes and target hint.
* Separate the computation that will become a kernel into its own (leaf node) function and add the attributes and target hint.
* Create a level 1 wrapper node function that will describe the thread-level parallelism (for the GPU). The node will:
* Create a level 1 wrapper node function that will describe the thread-level parallelism (for the GPU). The node will: