Repository navigation
Make LLJit the default JIT and fix its configuration file keys - #1423
Closed
matthiaskoenig wants to merge 1 commit into
Closed
matthiaskoenig wants to merge 1 commit into
matthiaskoenig wants to merge 1 commit into
Conversation
sys-bio#1215 meant to make LLJit the default, but changed the map from the names in the configuration file to the keys instead of the default value, so MCJit stayed the default. That map then mapped LLVM_BACKEND, LLJIT_OPTIMIZATION_LEVEL and LLJIT_NUM_THREADS to values instead of keys: reading "LLVM_BACKEND: 1" from a configuration file switched on LOADSBMLOPTIONS_RECOMPILE, and writing one wrote the values of other keys under these names. The map holds the keys again, and stringToKey uses it instead of its own list of names, which lacked K_ROWS_PER_WRITE and the metabolic control analysis keys. LLJit is the default with the optimization level DEFAULT and one compile thread. With a model of 500 species, DEFAULT compiles about 40% slower than NONE, and the model simulates about four times faster. AGGRESSIVE is not faster than DEFAULT, and more compile threads do not make the compilation of one model faster. Fixes sys-bio#1419.
|
You gotta tell me when you're working on a PR; I was already working on this one ;-) |
Collaborator
Author
|
@luciansmith no problem, just take is as an inspiration ;). Not expecting this to be merged, but more to provide you some input on what the scope of the fix is. If I can convince you that this is easy to fix than you probably address it. |
|
Fixed elsewhere. Thank you! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#1215 meant to make LLJit the default, but changed the map from the
names in the configuration file to the keys instead of the default
value, so MCJit stayed the default. That map then mapped LLVM_BACKEND,
LLJIT_OPTIMIZATION_LEVEL and LLJIT_NUM_THREADS to values instead of
keys: reading "LLVM_BACKEND: 1" from a configuration file switched on
LOADSBMLOPTIONS_RECOMPILE, and writing one wrote the values of other
keys under these names.
The map holds the keys again, and stringToKey uses it instead of its own
list of names, which lacked K_ROWS_PER_WRITE and the metabolic control
analysis keys. LLJit is the default with the optimization level DEFAULT
and one compile thread. With a model of 500 species, DEFAULT compiles
about 40% slower than NONE, and the model simulates about four times
faster. AGGRESSIVE is not faster than DEFAULT, and more compile threads
do not make the compilation of one model faster.
Fixes #1419.
The defaults were measured with Chen_MSB2009 of the PEtab benchmark collection (500 species, Linux, one process per setting, RECOMPILE on):
simulate is the best of 7 runs of
simulate(0, 100, 3)with the non-stiff solver and tolerances 1e-12/1e-14. With LLJit as the default, the LLJit object cache bug of #1420 affects every user; its fix is in a separate pull request.