Python 3.13.0 built with LLVM 19 and full LTO

Python 3.13.0 built with LLVM 19 and full LTO

Finally! We managed to compile the code of Python 3.13.0 using LLVM 19, with full link-time optimization (LTO):

The installation passes all 44 standard optimization tests:

Using random seed: 434731684
0:00:00 load avg: 1.72 Run 44 tests sequentially in a single process
0:00:00 load avg: 1.72 [ 1/44] test_array
0:00:00 load avg: 1.72 [ 2/44] test_base64
0:00:00 load avg: 1.72 [ 3/44] test_binascii
0:00:00 load avg: 1.72 [ 4/44] test_binop
0:00:00 load avg: 1.72 [ 5/44] test_bisect
0:00:00 load avg: 1.72 [ 6/44] test_bytes
0:00:03 load avg: 1.67 [ 7/44] test_bz2
0:00:04 load avg: 1.67 [ 8/44] test_cmath
0:00:04 load avg: 1.67 [ 9/44] test_codecs
0:00:05 load avg: 1.67 [10/44] test_collections
0:00:06 load avg: 1.67 [11/44] test_complex
0:00:06 load avg: 1.67 [12/44] test_dataclasses
0:00:07 load avg: 1.67 [13/44] test_datetime
0:00:11 load avg: 1.61 [14/44] test_decimal
0:00:14 load avg: 1.56 [15/44] test_difflib
0:00:15 load avg: 1.56 [16/44] test_embed
0:00:19 load avg: 1.52 [17/44] test_float
0:00:20 load avg: 1.52 [18/44] test_fstring
0:00:21 load avg: 1.52 [19/44] test_functools
0:00:21 load avg: 1.52 [20/44] test_generators
0:00:22 load avg: 1.52 [21/44] test_hashlib
0:00:22 load avg: 1.52 [22/44] test_heapq
0:00:23 load avg: 1.52 [23/44] test_int
0:00:24 load avg: 1.48 [24/44] test_itertools
0:00:26 load avg: 1.48 [25/44] test_json
0:00:29 load avg: 1.44 [26/44] test_long
0:00:31 load avg: 1.44 [27/44] test_lzma
0:00:31 load avg: 1.44 [28/44] test_math
0:00:33 load avg: 1.40 [29/44] test_memoryview
0:00:33 load avg: 1.40 [30/44] test_operator
0:00:34 load avg: 1.40 [31/44] test_ordered_dict
0:00:34 load avg: 1.40 [32/44] test_patma
0:00:35 load avg: 1.40 [33/44] test_pickle
0:00:39 load avg: 1.37 [34/44] test_pprint
0:00:39 load avg: 1.37 [35/44] test_re
0:00:40 load avg: 1.37 [36/44] test_set
0:00:44 load avg: 1.34 [37/44] test_sqlite3
0:00:44 load avg: 1.34 [38/44] test_statistics
0:00:49 load avg: 1.31 [39/44] test_str
0:00:51 load avg: 1.31 [40/44] test_struct
0:00:51 load avg: 1.31 [41/44] test_tabnanny
0:00:52 load avg: 1.31 [42/44] test_time
0:00:54 load avg: 1.21 [43/44] test_xml_etree
0:00:54 load avg: 1.21 [44/44] test_xml_etree_c

Total duration: 55.7 sec
Total tests: run=9,361 skipped=192
Total test files: run=44/44
Result: SUCCESS

Before, such results were impossible to achieve, see this bug report for details:

https://github.com/python/cpython/issues/110313

The installation is available in the software repository of the Discoverer Petascale Supercomputer. As usual, the build recipe and the logs collected during the compilation and publicly available online at:

https://gitlab.discoverer.bg/vkolev/recipes/-/tree/main/python/3/3.1

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Appliance - Powered by TurnKey Linux