FlexJava: Language support for safe and modular approximate programming. In the paper, we describe FlexJava , a small set of language extensions, that significantly reduces the annotation effort, paving the way for practical approximate programming. These extensions enable programmers to annotate approximation-tolerant method outputs. The FlexJava compiler, which is equipped with an approximation safety analysis, automatically infers the operations and data that affect these outputs and selectively marks them approximable while giving safety guarantees. The automation and the language–compiler codesign relieve programmers from manually and explicitly annotating data declarations or operations as safe to approximate. FlexJava is designed to support safety, modularity, generality, and scalability in software development. We have implemented FlexJava annotations as a Java library and we demonstrate its practicality using a wide range of Java applications. This replication package contains the FlexJava compiler that supports fine-grained and coarse-grained approximation. Note that FlexJava language/compiler are able to support general types of coarse-grained approximation technologies but here we provide NPU framework as an example of its use. For fine-grained approximation, we also included the modified EnerJ simulator that allows you to execute FlexJava binaries for quality and energy measurement. Moreover, all the benchmarks that we used for experiments in the paper are included in the package.

References in zbMATH (referenced in 1 article )

Showing result 1 of 1.
Sorted by year (citations)

  1. He, Shaobo; Lahiri, Shuvendu K.; Rakamarić, Zvonimir: Verifying relative safety, accuracy, and termination for program approximations (2018)