Hongzheng Chen
Hongzheng Chen
It is weird that the following two code snippet represents different meanings. The first approach does not add the newly generated loop to `axis`, so `C.axis[1]` refers to the *original*...
The bit slicing API was introduced in #291 , but it is confusing when it allows reversed slicing, since the ranges in Python are all left-closed right-open, while the reversed...
The current report API can only support retrieving reports from a single kernel. However, sometimes the generated code may implicitly or explicitly have multiple functions, which causes errors when displaying...
Currently, HeteroCL only supports simple reuse pattern as *[Tutorial: Memory Customization](http://heterocl.csl.cornell.edu/doc/tutorials/tutorial_06_memory.html)* depicts. However, when doing data streaming, we need to guarantee each element of an array is only read or...
HeteroCL generates flat designs that do not have function calls. Even the same modules (stages) will be repeated in the generated code for several times, which incurs large synthesis time....
I'm not sure why the access pattern in the generated VHLS code of the following example becomes so complex. Seems it only happens when the output array is larger the...
In this example, the 0th dimension of `A` is useless, since it only has size 1. ```python def test_multidimensional_array(): hcl.init() A = hcl.placeholder((1, 100), "A") def kernel(A): B = hcl.compute(A.shape,...
Some loops with trip count one cannot be eliminated by current simplification logic (see below), when `hcl.compute` is accompanied by the `attr` argument, which is very common in current `hlib`...
See the following example. ```python A = hcl.placeholder((8, 8), "A") B = hcl.placeholder((8, 8), "B") def kernel(A, B): C = hcl.compute((8, 8), lambda y, x: A[y][x] + 1, name="add") D...
When I stack two conv layers as shown below, ```python def double_conv(): A = hcl.placeholder((1,1,16,16), "A") w1 = hcl.placeholder((1,3,3,3), "w1") w2 = hcl.placeholder((3,6,3,3), "w2") def kernel(A, w1, w2): conv1 =...