| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
@gvanrossum @carljm @erlend-aasland |
Sorry, something went wrong.
There was a problem hiding this comment.
This looks fine to me.
Do we know why/how BOLT's peephole optimizations break compatibility? It seems that either we are implicitly relying on some undefined behavior, or the optimization is broken (and the BOLT team would likely be interested to know about that.)
Sorry, something went wrong.
I haven't reached that point yet, I think I need to acquire assembly code after BOLTed, |
Sorry, something went wrong.
…ngh-103187) Co-authored-by: Dong-hee Na <donghee.na@linecorp.com>
…ngh-103187) Co-authored-by: Dong-hee Na <donghee.na@linecorp.com>
| Back | FazBrowse Home | New Git URL |
Background
Experimental optimization techniques using LLVM-BOLT have been applied in CPython 3.12, but in order to provide this as an official feature, it must be ensured that the optimized binary does not change the expected behavior.
It has been confirmed that the peephole optimization provided by LLVM-BOLT re-raises the #53093 issue, and it passes the unit tests normally when this is disabled.
A detailed explanation of LLVM_BOLT will be shared at this year's Python Language Summit lightning talk, and materials will be published after the presentation.
(Also, I already shared the draft material at Discord of Python core team)
Performance Impact
I measured that enabling or disabling peephole optimization of LLVM-BOLT has almost no impact on performance, and it shows only noise-level results in the pyperformance benchmarks also.
pyperformance
Benchmark hidden because not significant (31): 2to3, async_tree_none, async_tree_io, async_tree_memoization, bench_mp_pool, deepcopy, deepcopy_memo, docutils, genshi_xml, html5lib, json_dumps, mdp, pickle, pickle_dict, pickle_pure_python, pyflate, regex_dna, regex_v8, sqlglot_parse, sqlglot_transpile, sympy_integrate, sympy_sum, sympy_str, telco, tornado_http, unpack_sequence, unpickle, unpickle_pure_python, xml_etree_parse, xml_etree_iterparse, xml_etree_process