A high-level synthesis approach optimizing accumulations in floating-point programs using custom formats and operators
Abstract
High-level synthesis (HLS) is a big step forward in terms of design productivity. However, it restricts data-types and operators to those available in the C language supported by the compiler. The present work lifts this restriction: it is a case study of enhancing an HLS design flow with non-standard operators, which can then be automatically optimized for their application context. The focus here is on widely used summation-reduction patterns. A source-to-source compiler rewrites, inside critical loop nests of the input C code, selected floating-point additions into sequences of simpler operator using non-standard arithmetic formats. This enables hoisting floating-point management out the loop. What remains inside the loop is a sequence of fixed-point additions whose size is computed to enforce a user-specified, application-specific accuracy constraint on the result. Evaluation of this method demonstrates significant improvements in the speed/resource usage/accuracy trade-off.
Origin | Files produced by the author(s) |
---|
Loading...