HeteroCL v0.2
Release Note
We are happy to announce that HeteroCL is now an open-source project. HeteroCL is currently both Python 2 and Python 3 compatible. Following we list the currently supported features and its related links (in tests and/or in the documentation).
General API
- hcl.init (initialize a HeteroCL environment)
- hcl.placeholder (create an input placeholder)
- hcl.create_schedule (create a schedule for hardware customization)
- hcl.lower (lower the program to IR for investigation)
- hcl.build (build the program)
- Related links: test, tutorial, doc
Data Type
- hcl.Int, hcl.UInt (can have arbitrary bitwidth up to 255 bits)
- hcl.Fixed, hcl.UFixed (can have arbitrary bitwidth up to 255 bits)
- hcl.Float (can be 32 or 64 bits)
- Related links: test, tutorial, doc
Imperative DSL
- hcl.and_, hcl.or_
- hcl.if_, hcl.elif_, hcl.else_
- hcl.for_, hcl.while_, hcl.break_
- bit operations (get bit, set bit, get slice, set slice)
- hcl.def_, hcl.return_ (a custom-defined HeteroCL module)
- Related links: general test, def test, tutorial, doc
Compute API
- hcl.compute (compute a new tensor according to the given formula)
- hcl.update (update an exsiting tensor according to the given formula)
- hcl.mutate (mutatively update an existing tensor)
- hcl.reduce_axis (create a reduce axis for reduction operation)
- hcl.sum (perform a summation on the given axis)
- hcl.pack, hcl.unpack (pack/unpack a tensor to larger/lower bitwidth)
- hcl.Stage (create a stage that contains user-defined operations)
- Related links: general test, reduction test, pack/unpck test, stage test, tutorial, doc
Compute Customization
- split, fuse, tile
- unroll, pipeline, parallel
- compute_at
- Related links: general test, imperative dsl test, tutorial, module tutorial, doc
Data Type API & Data Type Customization
- hcl.create_scheme (create a scheme for data type customization)
- hcl.create_schedule_from_scheme
- hcl.downsize (downsize integers to lower bit-width)
- hcl.quantize (quantize floating-points to fixed-points)
- Related links: test, tutorial, doc
Memory Customization
- partition, reshape
- reuse_at (create a reuse buffer provided the input tensor and stage)
- Related links: test, tutorial, doc
Back-end Target
- llvm (default target for CPU)
- vhls (generate Vivado HLS code)
- vhls_csim (generate an executable compiled from Vivado HLS code)
- ihls (generate Intel HLS code)
- merlinc (generate Merlin C code)
- soda (generate SODA DSL)
- soda_xhls (generate Vivado HLS code from SODA DSL)
- Related links: vhls test, ihls test, merlinc test, soda test, tutorial, SDOA tutorial