Closed hecmay closed 4 years ago
Have we also checked in the unit test cases for the OpenCL support? If not, we need to reopen this issue until the test is completed.
This PR was targeting the wrong master branch and that's why it's closed. Nothing is merged.
Then be sure to add comments before we close a PR.
Major changes in this PR:
The list of changes looks a bit messy now. I will fix the remaining bugs and separate these changes into 7 different PRs.
xcel
scope will be reformed into a kernel function. And this kernel function will be offloaded to the accelerator device.support declarative programming in
hcl.def_
: the statements placed under thehcl.def_
are all grouped into a super stage in HeteroCL, which will be later used to create a kernel node in the IR tree. The users can now easily usehcl.compute
orhcl.update
in the kernel function definition. Example:OpenCL code generator with streaming support For now we can support streaming from host to global memory, as well as streaming between kernels using pipes. Note that the streaming between sub-functions in a kernel function is not allowed in SDAccel. Examples as followed:
Auto-Tuning Integration (into another PR) The auto-tuning can be used to perform auto-scheduling on HeteroCL program, but the performance is not good using the generic heuristics. For now the Auto-Tuning API in HeteroCL is only used for quantization scheme tuning. The implemented API is shown as followed: After calling this API, the control will be handed over to
uptune
. I will separate this part into another PR later.Auto-scheduling with analytical model (into another PR) Auto-scheduling in HeteroCL performs analysis on adjacent compute stages in the HeteroCL program. The analytical model is very weak now. It can only check the reusability of a certain variable and apply
reuse_at
andcompute_at
schedules on the stage with optimization opportunities. the API is similar ashcl.tune()