Provide an "aggressive" specialization/JIT mode for debugging #129386
Labels
3.14
new features, bugs and security fixes
interpreter-core
(Objects, Python, Grammar, and Parser dirs)
performance
Performance or resource usage
topic-JIT
@markshannon recently pointed out that our thresholds for JIT stuff are high enough that running the test suite isn't quite the stress test that it used to be. While these thresholds will probably come down with time, it might make sense to provide a mode where specialization and the JIT happen much more aggressively, for development purposes.
Our current values are:
ADAPTIVE_WARMUP_VALUE
: 1 (specialize the 2nd time an instruction is run)ADAPTIVE_COOLDOWN_VALUE
: 52 (re-specialize the 53rd time a guard fails)JUMP_BACKWARD_INITIAL_VALUE
: 4095 (JIT a new "root" trace the 4096th time we jump backwards)SIDE_EXIT_INITIAL_VALUE
: 4095 (JIT a new side-exit trace the 4096th time a guard fails)I propose that this new mode use the following values:
ADAPTIVE_WARMUP_VALUE
: 1 (specialize the 2nd time an instruction is run)ADAPTIVE_COOLDOWN_VALUE
: 1 (re-specialize the 2nd time a guard fails)JUMP_BACKWARD_INITIAL_VALUE
: 15 (JIT a new "root" trace the 16th time we jump backwards)SIDE_EXIT_INITIAL_VALUE
: 15 (JIT a new side-exit trace the 16th time a guard fails)A few notes:
STORE_ATTR
can fail to specialize if storage for the new attribute doesn't exist yet), so it doesn't make sense to reduceADAPTIVE_WARMUP_VALUE
further.ADAPTIVE_COOLDOWN_VALUE
is reduced to zero. This probably indicates a bug where we are specializing, then immediately deopting (because the specialization is incorrect somehow).--with-pydebug
to keep things simple?Before moving forward with this, we first need to update all tests that hardcode assumptions about these values (I already have a branch for this). This is worth doing anyways so the values can be tweaked in the future with minimal disruption.
Linked PRs
test.support.reset_code
#129486The text was updated successfully, but these errors were encountered: