runtimeverification / runtimeverification/haskell-backend
Experiment to evaluate concrete terms in booster instead of llvm library
Open
@jberthold is already working on this.
Since Feb 27, 2024.
runtimeverification/hs-backend-booster
- Dominant language
- Haskell
- Stars
- 224
- Forks
- 43
- PR merge metrics
- No merged PRs in 30d
Description
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:
- Implement a broad selection of hooked functions for frequently-used data types
- 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
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.