mirror of
https://git.yoctoproject.org/poky
synced 2026-02-09 10:13:03 +01:00
python3: use regrtest instead of PyBench for profile-guided-optimisation
PyBench takes a long time to run, also upstream have removed it from Python and instead use test.regrtest —pgo to profile the interpreter. The results are good: not only does Python compile faster (~300s vs ~600s on my machine) but Phoronix’s PyBench test runs in 2130ms compared to 2229ms when using PyBench to train (and 2345ms with PGO disabled). (From OE-Core rev: 98b2b6c3eae15d9b84c97c6a1495040f6b7e389a) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
dbb2d923de
commit
d9f7b9d3ad
@@ -76,7 +76,7 @@ SDK_CC_ARCH += "-DNDEBUG -fno-inline"
|
||||
EXTRA_OEMAKE += "CROSS_COMPILE=yes"
|
||||
EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ --without-ensurepip"
|
||||
|
||||
PYTHON3_PROFILE_TASK ?= "${S}/Tools/pybench/pybench.py -n 1"
|
||||
PYTHON3_PROFILE_TASK ?= "./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true"
|
||||
|
||||
export CROSS_COMPILE = "${TARGET_PREFIX}"
|
||||
export _PYTHON_PROJECT_BASE = "${B}"
|
||||
@@ -144,13 +144,15 @@ do_compile() {
|
||||
if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
|
||||
run_make profile-opt
|
||||
qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}"
|
||||
cat > pgo-image-qemuwrapper << EOF
|
||||
cat >pgo-wrapper <<EOF
|
||||
#!/bin/sh
|
||||
set -x
|
||||
cd ${B}
|
||||
$qemu_binary "\$@"
|
||||
EOF
|
||||
chmod +x pgo-image-qemuwrapper
|
||||
./pgo-image-qemuwrapper ${B}/python ${PYTHON3_PROFILE_TASK} || true
|
||||
chmod +x pgo-wrapper
|
||||
bbnote Gathering profiling data
|
||||
./pgo-wrapper ${PYTHON3_PROFILE_TASK}
|
||||
bbnote Profiling data gathered, rebuilding
|
||||
run_make clean_and_use_profile
|
||||
else
|
||||
run_make libpython3.so
|
||||
|
||||
Reference in New Issue
Block a user