Skip to content

Experiment to evaluate concrete terms in booster instead of llvm library #3767

Open
@jberthold

Description

@jberthold

Fully concrete terms are currently sent to the LLVM backend library, which may (or may not) represent a considerable fraction of execution time.
Several ideas combined may get us some performance improvements:

  1. Implement a broad selection of hooked functions for frequently-used data types
  2. Decide in some way dynamically how and whether to call the LLVM library:
  • Export hooks instead of term API (plus hooked-type API) from LLVM library.
    • Hopefully thread-safe by construction
    • will keep calling marshalling more often, but hopefully very efficient small functions
  • be more semantics-independent: not recompiling a specific definition but rather have a generic llvm library
    • amounts to exporting the hooks when taken to the extreme
    • however, there may be cases of generic functions doing useful work on symbolic input
  • hook analysis
    a) analyse function equations for which hooks they use (transitively, bottom-up)
    b) synthesize term attribute to get a list of hooks
    c) only call llvm if there are hooks not implemented in booster

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions