Skip to main content
European Commission logo print header

ADVANCED SPECIALIZATION AND ANALYSIS FOR PERVASIVE SYSTEMS

Deliverables

The functionality of a PIC processor, commonly used in applications such as wearable computing, has been modelled as an emulator written in Constraint Logic Programming (CLP). The PIC emulator can be specialised with respect to a given PIC program, using an online or offline partial evaluator, which are part of an analysis and specialisation toolset for logic programs developed in the ASAP project. The result is a CLP representation of the PIC program, which can be analysed using CLP abstract interpretation tools. The emulator serves as a demonstrator for a general approach to developing program analysis tools for a variety of different languages, using CLP representations of their semantics and a single set of CLP specialisation and analysis tools. The potential benefit of this approach is that advances in the CLP toolset are immediately transferred to the tools for other languages.
In this project the partial evaluators LOGEN and ECCE were further developed. Notably, new command line interfaces as well as new web interfaces were developed. A fully automatic binding-time analysis (BTA) was developed for LOGEN. A self-tuning resource aware specializer was built on top of LOGEN and the BTA. A slicer was developed on top of ECCE. In summary, the tools were made more powerful and much more user friendly, and applicable to new areas.
In this result we have gathered a collection of benchmarks from the pervasive domain. These benchmarks can be used by people to try and automatically generate "optimal" code, code that uses few instructions, few memory cells, few milli-amps when executing, etc. These benchmarks can be compared to benchmarks such as the embassy benchmarks (for multimedia operations), linpack (numerical algorithms) and the splash benchmarks (for parallel programming). The unique selling point is that the programs are programs at the heart of pervasive systems. The commercial value of the set of benchmarks is hard to measure, but previous sets of benchmarks have accelerated processor and compiler design, as benchmarks can be used as a standard to compare systems, compilers, or processors. (Having said that, benchmarks become obsolete once system designers start to target specific benchmarks, such as Dhrystone, and figures become meaningless). Our target audience is developers of compilers, whether free software (gcc), academics, or commercial (.net, java). Over the past few years a steady stream of experimental compiler work has found its way into mainstream compilers, for example Java generics. We hope that making available source code of some basic algorithms, together with a statement as to what can be achieved, compiler writers will attempt to implement some of the specialisation algorithms in mainstream compilers.
CiaoPP is the abstract interpretation-based pre-processor of the Ciao multi-paradigm program development environment. It uses modular, incremental abstract interpretation as a fundamental tool to infer information about programs. CiaoPP includes the PLAI generic abstract interpretation-based program analyser, which incorporates a wealth of analysis domains, which allow inference of many interesting properties of programs including types, modes and other operational variable instantiation properties, pointer aliasing, non-failure, determinacy, bounds on resource consumption (such as computational cost or sizes of data in the program), etc. The inferred abstract information is used extensively to perform static program debugging and verification. This includes checking how programs call system library predicates and also checking the assertions present in the program or in other modules used by the program. Such assertions represent essentially partial specifications of the program. The abstract model of the program inferred by the analysers is used in the system to certify that an untrusted mobile code is safe w.r.t. the given policy (i.e., an abstraction-carrying code approach to mobile code safety). Abstract information is also used for allowing several kinds of source-to-source program transformations such as program specialization, slicing, partial evaluation of a program, program parallelization (taking granularity control into account), inclusion of run-time tests for assertions which cannot be checked completely at compile-time, etc. The information generated by analysis, the assertions in the system libraries, and the assertions optionally included in user programs as specifications are all written in the same assertion language, which is in turn also used by the Ciao system documentation generator, lpdoc. CiaoPP is currently released as open source code and it is in everyday use for research purposes at many sites. There are two classes of potential users of CiaoPP: a) current researchers in abstract interpretation-based program analysis, which already use its extensive facilities as a harness in which to test their systems, and b) final users, which routinely use CiaoPP to debug, verify, optimise, and certify their programs.

Searching for OpenAIRE data...

There was an error trying to search data from OpenAIRE

No results available