Package: guix;
Reported by: "Dr. Arne Babenhauserheide" <arne_bab <at> web.de>
Date: Wed, 22 Mar 2023 22:43:01 UTC
Severity: normal
Tags: patch
To reply to this bug, email your comments to 62395 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-guix <at> gnu.org
:bug#62395
; Package guix
.
(Wed, 22 Mar 2023 22:43:02 GMT) Full text and rfc822 format available."Dr. Arne Babenhauserheide" <arne_bab <at> web.de>
:bug-guix <at> gnu.org
.
(Wed, 22 Mar 2023 22:43:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: "Dr. Arne Babenhauserheide" <arne_bab <at> web.de> To: bug-guix <at> gnu.org Subject: [PATCH] Tunable guile <at> 3.0.9t package Date: Wed, 22 Mar 2023 22:19:22 +0100
[Message part 1 (text/plain, inline)]
Hi, The attached patch adds a guile <at> 3.0.9t package that enables CPU architecture tuning for Guile and for a specialized libgc. It creates new packages to avoid causing rebuilds.
[0001-gnu-create-tunable-guile-3.0.9t-that-uses-tunable-bd.patch (text/x-patch, inline)]
From fbde1198a2386874e059faf8b3afdd09288bc7aa Mon Sep 17 00:00:00 2001 From: Arne Babenhauserheide <arne_bab <at> web.de> Date: Wed, 22 Mar 2023 18:32:08 +0100 Subject: [PATCH] gnu: create tunable guile <at> 3.0.9t that uses tunable bdw-gc * gnu/packages/bdw-gc.scm (libgc/tunable): new derived package with (tunable? . #t) property. * gnu/packages/guile.scm (guile-3.0-latest/tunable): new derived package with (tunable? . #t) property that uses libgc/tunable as propagated input. --- gnu/packages/bdw-gc.scm | 8 ++++++++ gnu/packages/guile.scm | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm index ae0d761ac3..a5a58da877 100644 --- a/gnu/packages/bdw-gc.scm +++ b/gnu/packages/bdw-gc.scm @@ -96,6 +96,14 @@ (define-public libgc (license (x11-style (string-append home-page "license.txt"))))) +(define-public libgc/tunable + (package + (inherit libgc) + (properties + '((release-monitoring-url . "https://www.hboehm.info/gc/gc_source/") + (upstream-name . "gc") + (tunable? #t))))) + ;; TODO: Add a static output in libgc in the next rebuild cycle. (define-public libgc/static-libs (package/inherit diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 2fd9b711ce..715f5c7a61 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -419,6 +419,28 @@ (define-public guile-3.0-latest "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n"))))) '()))))))) +(define-public guile-3.0-latest/tunable + (package + (inherit guile-3.0-latest) + (version "3.0.9t") + (source (origin + (inherit (package-source guile-3.0)) + (uri (string-append "mirror://gnu/guile/guile-" + (string-delete #\t version) + ".tar.xz")) + (sha256 + (base32 + "03bm1mnfc9kkg2ls942a0js7bxrdzmcffgrgg6anwdmjfan2a9hs")))) + (propagated-inputs + (modify-inputs (package-propagated-inputs guile-3.0-latest) + (replace "bdw-gc" libgc/tunable) + )) + + (properties '((tunable? . #t) ;this is the point of this package + (timeout . 72000) ;20 hours + (max-silent-time . 36000))))) ;10 hours (needed on ARM + ; when heavily loaded) + ;;; The symbol guile-3.0/fixed should be used when guile-3.0 needs fixes ;;; (security or else) and this deprecation could be removed. (define-deprecated/public-alias guile-3.0/fixed guile-3.0/pinned) -- 2.39.2
[Message part 3 (text/plain, inline)]
The results of a benchmark are still not fully conclusive: regular Guile seems to be slightly slower in the Geometric mean of all tests, but there are benchmarks where a tuned Guile is slower. Note that this is tuning for znver3 while I actually have znver4, but support for the correct compile-target will only arrive with GCC 13. To replicate the benchmarks: echo guix pull --disable-authentication --allow-downgrades -u … # get the new packages guix shell mercurial -- hg clone https://hg.sr.ht/~arnebab/wisp guix shell git -- git clone https://github.com/ecraven/r7rs-benchmarks cd r7rs-benchmarks for N in {1..3}; do guix shell --tune guile <at> 3.0.9t -- ./bench guile all && mv results.Guile{,-tuned${N}} guix shell guile <at> 3.0.9 -- ./bench guile all && mv results.Guile{,-regular${N}} sed -i 's/\+guile/+guiletuned/' results.Guile-tuned${N} sed -i 's/\+guile/+guileregular/' results.Guile-regular${N} done grep -a -h '+!CSVLINE' results.Guile-{regular,tuned}* | sed 's/+!CSVLINE!+//' > all.csv guix shell guile-wisp guile -- ../wisp/examples/evaluate-r7rs-benchmark.w ~/eigenes/Programme/r7rs-benchmarks/all.csv guiletuned guix shell guile-wisp guile -- ../wisp/examples/evaluate-r7rs-benchmark.w ~/eigenes/Programme/r7rs-benchmarks/all.csv guileregular My results with N in {1..2}, the Geometric mean: Guile tuned has a slowdown of 1.03512801239189 Guile regular has a slowdown of 1.0504373210343294 This suggests that the regular Guile is 1.48% slower than tuned Guile. Since I have no errorbars, I cannot say whether this is significant. === Guiletuned slowdown === (("bv2string:1000:1000:100" . 1.0) ("equal" . #f) ("mperm:20:10:2:1" . 1.146669471586088) ("gcbench:20:1" . 1.0197445340007967) ("sboyer:5:1" . 1.0398502157522214) ("nboyer:5:1" . 1.050828554948064) ("chudnovsky:50:500:50:1000" . 1.0236854348323314) ("slatex:500" . 1.0063944149759714) ("scheme:100000" . 1.0689169431069399) ("quicksort:10000:2500" . 1.003088477529797) ("primes:1000:10000" . 1.041839283639136) ("peval:2000" . 1.0560148767561295) ("parsing:2500" . 1.0003564615141731) ("paraffins:23:10" . 2.0039145601078086) ("nqueens:13:10" . 1.0) ("mazefun:11:11:10000" . 1.034627134692567) ("maze:20:7:10000" . 1.001234149986604) ("matrix:5:5:2500" . 1.047237971262676) ("lattice:44:10" . 1.003284878892407) ("graphs:7:3" . 1.101724767552233) ("earley:1" . 1.0507663201957202) ("dynamic:500" . 1.0806476338778386) ("conform:500" . 1.0) ("compiler:2000" . 1.0973709486022507) ("read1:2500" . 1.0) ("wc:inputs/bib:50" . 1.0252716381981584) ("tail:50" . 1.070013760352806) ("cat:50" . 1.1006490143447183) ("sum1:25" . 1.0) ("string:500000:100" . 1.005448377967908) ("array1:1000000:500" . 1.017108880809611) ("ack:3:12:2" . 1.0343152722188402) ("simplex:1000000" . 1.0213054034897673) ("ray:50" . 1.0090968950973398) ("pnpoly:1000000" . 1.0091804774033606) ("pi:50:500:50:100" . 1.0) ("nucleic:50" . 1.0173803271423734) ("mbrotZ:75:1000" . 1.022665128035874) ("mbrot:75:1000" . 1.0) ("fft:65536:100" . 1.0) ("sumfp:1000000.0:500" . 1.0) ("sum:10000:200000" . 1.0028978038917624) ("fibfp:35.0:10" . 1.029590065926432) ("fibc:30:10" . 1.0072040559671238) ("fib:40:5" . 1.0023503962392322) ("ctak:27:16:8:1" . 1.0) ("cpstak:40:20:11:1" . 1.0) ("ntakl:40:20:12:1" . 1.046107228813898) ("takl:40:20:12:1" . 1.0327425092626041) ("tak:40:20:11:1" . 1.0) ("triangl:22:1:50" . 1.0143942222863194) ("puzzle:1000" . 1.2229189054254013) ("divrec:1000:1000000" . 1.0074179348861916) ("diviter:1000:1000000" . 1.043931078583493) ("destruc:600:50:4000" . 1.0240507947888393) ("deriv:10000000" . 1.0319784815172544) ("browse:2000" . 1.1070660842252487) ("bv2string:1000:1000:100" . 1.0338536673222782) ("equal" . #f) ("mperm:20:10:2:1" . 1.1881732405136267) ("gcbench:20:1" . 1.0) ("sboyer:5:1" . 1.0631408998092902) ("nboyer:5:1" . 1.0217971951625024) ("chudnovsky:50:500:50:1000" . 1.0) ("slatex:500" . 1.0) ("scheme:100000" . 1.0) ("quicksort:10000:2500" . 1.0543263325575605) ("primes:1000:10000" . 1.0067412573033894) ("peval:2000" . 1.0) ("parsing:2500" . 1.0) ("paraffins:23:10" . 1.0) ("nqueens:13:10" . 1.0176605905015021) ("mazefun:11:11:10000" . 1.037746391910457) ("maze:20:7:10000" . 1.0) ("matrix:5:5:2500" . 1.0200605013910409) ("lattice:44:10" . 1.0102542438570286) ("graphs:7:3" . 1.0384572473968816) ("earley:1" . 1.0) ("dynamic:500" . 1.0) ("conform:500" . 1.0091118513899833) ("compiler:2000" . 1.0) ("read1:2500" . 1.0599058441532945) ("wc:inputs/bib:50" . 1.0746142263219225) ("tail:50" . 1.0632740266035832) ("cat:50" . 1.0929665813153533) ("sum1:25" . 1.036061672363642) ("string:500000:100" . 1.0162155078942512) ("array1:1000000:500" . 1.0515376902103308) ("ack:3:12:2" . 1.0118706763775067) ("simplex:1000000" . 1.0164588830600216) ("ray:50" . 1.0) ("pnpoly:1000000" . 1.0) ("pi:50:500:50:100" . 1.045459192674658) ("nucleic:50" . 1.0017484672084827) ("mbrotZ:75:1000" . 1.0) ("mbrot:75:1000" . 1.0311423294990856) ("fft:65536:100" . 1.0504466238403414) ("sumfp:1000000.0:500" . 1.0091469248322233) ("sum:10000:200000" . 1.0) ("fibfp:35.0:10" . 1.0) ("fibc:30:10" . 1.1257119803649067) ("fib:40:5" . 1.0) ("ctak:27:16:8:1" . 1.0148864364373957) ("cpstak:40:20:11:1" . 1.011283388260497) ("ntakl:40:20:12:1" . 1.0) ("takl:40:20:12:1" . 1.007232975497366) ("tak:40:20:11:1" . 1.0362220583744437) ("triangl:22:1:50" . 1.022212297184504) ("puzzle:1000" . 1.2350889918747268) ("divrec:1000:1000000" . 1.0064081034755894) ("diviter:1000:1000000" . 1.0) ("destruc:600:50:4000" . 1.0) ("deriv:10000000" . 1.0061506030191765) ("browse:2000" . 1.0065279614595284)) === Guiletuned Geometric Mean slowdown (successful tests / total tests) === 1.03512801239189 (112 / 114) === Guileregular slowdown === (("bv2string:1000:1000:100" . 1.0674803047626884) ("equal" . #f) ("mperm:20:10:2:1" . 1.094739035540671) ("gcbench:20:1" . 1.0172414374269374) ("sboyer:5:1" . 1.0) ("nboyer:5:1" . 1.0) ("chudnovsky:50:500:50:1000" . 1.1734845659670659) ("slatex:500" . 1.0239374916619306) ("scheme:100000" . 1.122700507430036) ("quicksort:10000:2500" . 1.0) ("primes:1000:10000" . 1.0) ("peval:2000" . 1.0088858652748092) ("parsing:2500" . 1.0418903162390507) ("paraffins:23:10" . 2.042048452193248) ("nqueens:13:10" . 1.0100153261373226) ("mazefun:11:11:10000" . 1.0) ("maze:20:7:10000" . 1.048959091743095) ("matrix:5:5:2500" . 1.0) ("lattice:44:10" . 1.0079437861216478) ("graphs:7:3" . 1.198135373192713) ("earley:1" . 1.0959681146976517) ("dynamic:500" . 1.16155735839947) ("conform:500" . 1.0119217370442324) ("compiler:2000" . 1.0306165278415973) ("read1:2500" . 1.0460552396933456) ("wc:inputs/bib:50" . 1.0) ("tail:50" . 1.0319054479289398) ("cat:50" . 1.0) ("sum1:25" . 1.034137468078866) ("string:500000:100" . 1.0) ("array1:1000000:500" . 1.0) ("ack:3:12:2" . 1.0057561961050057) ("simplex:1000000" . 1.0) ("ray:50" . 1.0438647708135202) ("pnpoly:1000000" . 1.0874091135942872) ("pi:50:500:50:100" . 1.0215934390378087) ("nucleic:50" . 1.0) ("mbrotZ:75:1000" . 1.052938347579755) ("mbrot:75:1000" . 1.0329378591712912) ("fft:65536:100" . 1.0189087888402792) ("sumfp:1000000.0:500" . 1.0482534106366277) ("sum:10000:200000" . 1.0289912283371638) ("fibfp:35.0:10" . 1.033671691949834) ("fibc:30:10" . 1.178850020182939) ("fib:40:5" . 1.024466514102094) ("ctak:27:16:8:1" . 1.1039955311250749) ("cpstak:40:20:11:1" . 1.0371479505513828) ("ntakl:40:20:12:1" . 1.0213756257162367) ("takl:40:20:12:1" . 1.0) ("tak:40:20:11:1" . 1.0126417896363957) ("triangl:22:1:50" . 1.0) ("puzzle:1000" . 1.0) ("divrec:1000:1000000" . 1.0450154469330961) ("diviter:1000:1000000" . 1.0591207445325488) ("destruc:600:50:4000" . 1.0838399255052662) ("deriv:10000000" . 1.0) ("browse:2000" . 1.018717561314545) ("bv2string:1000:1000:100" . 1.036089236974368) ("equal" . #f) ("mperm:20:10:2:1" . 1.0) ("gcbench:20:1" . 1.0243606915521992) ("sboyer:5:1" . 1.00368112089037) ("nboyer:5:1" . 1.0500604616494615) ("chudnovsky:50:500:50:1000" . 1.115409983742645) ("slatex:500" . 1.0002570334324394) ("scheme:100000" . 1.0390531892971318) ("quicksort:10000:2500" . 1.0098428078516584) ("primes:1000:10000" . 1.06437827292514) ("peval:2000" . 1.024359358481343) ("parsing:2500" . 1.0004232513670308) ("paraffins:23:10" . 2.024687502614597) ("nqueens:13:10" . 1.0058665553469563) ("mazefun:11:11:10000" . 1.056194215282642) ("maze:20:7:10000" . 1.020543843425558) ("matrix:5:5:2500" . 1.0028500406404608) ("lattice:44:10" . 1.0) ("graphs:7:3" . 1.0) ("earley:1" . 1.0256148071738138) ("dynamic:500" . 1.008662479565268) ("conform:500" . 1.0332430727462598) ("compiler:2000" . 1.006956809282123) ("read1:2500" . 1.0564058966125223) ("wc:inputs/bib:50" . 1.0335552278476583) ("tail:50" . 1.0) ("cat:50" . 1.0263527061380673) ("sum1:25" . 1.0638438694063255) ("string:500000:100" . 1.1084001200578586) ("array1:1000000:500" . 1.0547700539059255) ("ack:3:12:2" . 1.0) ("simplex:1000000" . 1.021845418562125) ("ray:50" . 1.0558263145762616) ("pnpoly:1000000" . 1.0598933662254997) ("pi:50:500:50:100" . 1.0211985475879175) ("nucleic:50" . 1.0313190698159154) ("mbrotZ:75:1000" . 1.0191939711368345) ("mbrot:75:1000" . 1.0325883765897468) ("fft:65536:100" . 1.1023483002887104) ("sumfp:1000000.0:500" . 1.0794299746553448) ("sum:10000:200000" . 1.063704305941153) ("fibfp:35.0:10" . 1.1160079648284265) ("fibc:30:10" . 1.0) ("fib:40:5" . 1.0533185743228644) ("ctak:27:16:8:1" . 1.2839324786349615) ("cpstak:40:20:11:1" . 1.0290465857280968) ("ntakl:40:20:12:1" . 1.017152038958873) ("takl:40:20:12:1" . 1.0008854776027978) ("tak:40:20:11:1" . 1.0077102329273817) ("triangl:22:1:50" . 1.0435679627887324) ("puzzle:1000" . 1.0006869727744467) ("divrec:1000:1000000" . 1.0) ("diviter:1000:1000000" . 1.0496228639946887) ("destruc:600:50:4000" . 1.0446502508269544) ("deriv:10000000" . 1.0901526807172006) ("browse:2000" . 1.0)) === Guileregular Geometric Mean slowdown (successful tests / total tests) === 1.0504373210343294 (112 / 114) Actual full results from two runs: === Guiletuned times === (("ack:3:12:2" "2.85671086") ("ack:3:12:2" "2.920076389") ("array1:1000000:500" "2.719338434") ("array1:1000000:500" "2.630303504") ("browse:2000" "4.653660319") ("browse:2000" "5.118496161") ("bv2string:1000:1000:100" "1.433438423") ("bv2string:1000:1000:100" "1.386500303") ("cat:50" "10.334967974") ("cat:50" "10.407612189") ("chudnovsky:50:500:50:1000" "0.362723212") ("chudnovsky:50:500:50:1000" "0.371314469") ("compiler:2000" "2.14676404") ("compiler:2000" "2.355796491") ("conform:500" "4.878185941") ("conform:500" "4.834137994") ("cpstak:40:20:11:1" "17.407945755") ("cpstak:40:20:11:1" "17.213716706") ("ctak:27:16:8:1" "13.296419091") ("ctak:27:16:8:1" "13.101386139") ("deriv:10000000" "6.006358226") ("deriv:10000000" "6.160541397") ("destruc:600:50:4000" "2.524561809") ("destruc:600:50:4000" "2.585279527") ("diviter:1000:1000000" "4.459944493") ("diviter:1000:1000000" "4.655874665") ("divrec:1000:1000000" "6.71596458") ("divrec:1000:1000000" "6.722703389") ("dynamic:500" "3.525123929") ("dynamic:500" "3.809416833") ("earley:1" "4.054948659") ("earley:1" "4.260803481") ("equal" "ULIMITKILLED") ("equal" "ULIMITKILLED") ("fft:65536:100" "2.635766227") ("fft:65536:100" "2.509186252") ("fib:40:5" "4.193038108") ("fib:40:5" "4.202893409") ("fibc:30:10" "40.788333173") ("fibc:30:10" "36.494392282") ("fibfp:35.0:10" "9.395625366") ("fibfp:35.0:10" "9.67364254") ("gcbench:20:1" "0.99502713") ("gcbench:20:1" "1.014673477") ("graphs:7:3" "12.370817417") ("graphs:7:3" "13.124503659") ("lattice:44:10" "6.197259938") ("lattice:44:10" "6.154507367") ("matrix:5:5:2500" "3.641334999") ("matrix:5:5:2500" "3.73835108") ("maze:20:7:10000" "1.613933494") ("maze:20:7:10000" "1.61592533") ("mazefun:11:11:10000" "3.749008984") ("mazefun:11:11:10000" "3.737740216") ("mbrot:75:1000" "19.750189296") ("mbrot:75:1000" "19.153698506") ("mbrotZ:75:1000" "20.612462381") ("mbrotZ:75:1000" "21.07964648") ("mperm:20:10:2:1" "9.617642771") ("mperm:20:10:2:1" "9.281691405") ("nboyer:5:1" "1.872344958") ("nboyer:5:1" "1.925542129") ("nqueens:13:10" "6.834513689") ("nqueens:13:10" "6.715906809") ("ntakl:40:20:12:1" "3.226853095") ("ntakl:40:20:12:1" "3.375634349") ("nucleic:50" "4.703444216") ("nucleic:50" "4.776839468") ("paraffins:23:10" "2.986478347") ("paraffins:23:10" "5.984647443") ("parsing:2500" "3.588179787") ("parsing:2500" "3.589458835") ("peval:2000" "4.217629667") ("peval:2000" "4.453879673") ("pi:50:500:50:100" "0.526672392") ("pi:50:500:50:100" "0.503771353") ("pnpoly:1000000" "12.105856386") ("pnpoly:1000000" "12.216993927") ("primes:1000:10000" "2.763279203") ("primes:1000:10000" "2.859615422") ("puzzle:1000" "7.432281644") ("puzzle:1000" "7.359046832") ("quicksort:10000:2500" "4.919145241") ("quicksort:10000:2500" "4.680086002") ("ray:50" "6.232801675") ("ray:50" "6.289500818") ("read1:2500" "3.322952744") ("read1:2500" "3.135139562") ("sboyer:5:1" "1.585267198") ("sboyer:5:1" "1.550538069") ("scheme:100000" "5.899088913") ("scheme:100000" "6.305636088") ("simplex:1000000" "4.74155611") ("simplex:1000000" "4.764164057") ("slatex:500" "5.5026227") ("slatex:500" "5.537808753") ("string:500000:100" "0.68799508") ("string:500000:100" "0.680705551") ("sum1:25" "3.378466719") ("sum1:25" "3.260874144") ("sum:10000:200000" "1.715693396") ("sum:10000:200000" "1.720665139") ("sumfp:1000000.0:500" "17.278236223") ("sumfp:1000000.0:500" "17.121625997") ("tail:50" "4.837888687") ("tail:50" "4.868554424") ("tak:40:20:11:1" "2.207812177") ("tak:40:20:11:1" "2.13063615") ("takl:40:20:12:1" "3.273725333") ("takl:40:20:12:1" "3.356636843") ("triangl:22:1:50" "3.13643409") ("triangl:22:1:50" "3.112446043") ("wc:inputs/bib:50" "6.354178924") ("wc:inputs/bib:50" "6.062416889")) === Guileregular times === (("ack:3:12:2" "2.823197595") ("ack:3:12:2" "2.839448474") ("array1:1000000:500" "2.727697517") ("array1:1000000:500" "2.58605893") ("browse:2000" "4.62347843") ("browse:2000" "4.710018671") ("bv2string:1000:1000:100" "1.436538041") ("bv2string:1000:1000:100" "1.480061766") ("cat:50" "9.705074729") ("cat:50" "9.45588653") ("chudnovsky:50:500:50:1000" "0.404585092") ("chudnovsky:50:500:50:1000" "0.425650091") ("compiler:2000" "2.161698668") ("compiler:2000" "2.212490501") ("conform:500" "4.994839595") ("conform:500" "4.891769316") ("cpstak:40:20:11:1" "17.713716404") ("cpstak:40:20:11:1" "17.853171003") ("ctak:27:16:8:1" "16.821295179") ("ctak:27:16:8:1" "14.463871749") ("deriv:10000000" "6.507820501") ("deriv:10000000" "5.969641332") ("destruc:600:50:4000" "2.637284127") ("destruc:600:50:4000" "2.736220883") ("diviter:1000:1000000" "4.681259712") ("diviter:1000:1000000" "4.723619732") ("divrec:1000:1000000" "6.673202011") ("divrec:1000:1000000" "6.973599182") ("dynamic:500" "3.555660243") ("dynamic:500" "4.094633639") ("earley:1" "4.158815387") ("earley:1" "4.444094437") ("equal" "ULIMITKILLED") ("equal" "ULIMITKILLED") ("fft:65536:100" "2.7659972") ("fft:65536:100" "2.556631925") ("fib:40:5" "4.416604922") ("fib:40:5" "4.295627134") ("fibc:30:10" "36.233365092") ("fibc:30:10" "42.71370317") ("fibfp:35.0:10" "10.485592743") ("fibfp:35.0:10" "9.711991969") ("gcbench:20:1" "1.019266679") ("gcbench:20:1" "1.012182828") ("graphs:7:3" "11.912688219") ("graphs:7:3" "14.273013145") ("lattice:44:10" "6.134356748") ("lattice:44:10" "6.183086766") ("matrix:5:5:2500" "3.579898395") ("matrix:5:5:2500" "3.569724535") ("maze:20:7:10000" "1.647089891") ("maze:20:7:10000" "1.692950212") ("mazefun:11:11:10000" "3.815654415") ("mazefun:11:11:10000" "3.612644682") ("mbrot:75:1000" "19.777886446") ("mbrot:75:1000" "19.78458033") ("mbrotZ:75:1000" "21.008097389") ("mbrotZ:75:1000" "21.703652079") ("mperm:20:10:2:1" "8.094478518") ("mperm:20:10:2:1" "8.861341606") ("nboyer:5:1" "1.924134672") ("nboyer:5:1" "1.832403697") ("nqueens:13:10" "6.755306048") ("nqueens:13:10" "6.783168806") ("ntakl:40:20:12:1" "3.282200205") ("ntakl:40:20:12:1" "3.295829099") ("nucleic:50" "4.842285137") ("nucleic:50" "4.695234752") ("paraffins:23:10" "6.046685386") ("paraffins:23:10" "6.098533486") ("parsing:2500" "3.589698489") ("parsing:2500" "3.738489773") ("peval:2000" "4.32036842") ("peval:2000" "4.255106956") ("pi:50:500:50:100" "0.514450574") ("pi:50:500:50:100" "0.514649509") ("pnpoly:1000000" "12.830916876") ("pnpoly:1000000" "13.164018562") ("primes:1000:10000" "2.921479898") ("primes:1000:10000" "2.744775962") ("puzzle:1000" "6.021742132") ("puzzle:1000" "6.017608199") ("quicksort:10000:2500" "4.71159952") ("quicksort:10000:2500" "4.665676166") ("ray:50" "6.580756022") ("ray:50" "6.506202092") ("read1:2500" "3.31197992") ("read1:2500" "3.279529166") ("sboyer:5:1" "1.496605726") ("sboyer:5:1" "1.491116745") ("scheme:100000" "6.129467149") ("scheme:100000" "6.622910116") ("simplex:1000000" "4.766683108") ("simplex:1000000" "4.664779057") ("slatex:500" "5.504037058") ("slatex:500" "5.634341685") ("string:500000:100" "0.750405621") ("string:500000:100" "0.677016907") ("sum1:25" "3.469060967") ("sum1:25" "3.372192131") ("sum:10000:200000" "1.824990453") ("sum:10000:200000" "1.765433455") ("sumfp:1000000.0:500" "18.481596316") ("sumfp:1000000.0:500" "17.947802847") ("tail:50" "4.54999235") ("tail:50" "4.695161894") ("tak:40:20:11:1" "2.147063851") ("tak:40:20:11:1" "2.157571204") ("takl:40:20:12:1" "3.25309459") ("takl:40:20:12:1" "3.250216596") ("triangl:22:1:50" "3.201959263") ("triangl:22:1:50" "3.068280531") ("wc:inputs/bib:50" "6.111397639") ("wc:inputs/bib:50" "5.912986045")) Best wishes, Arne -- Unpolitisch sein heißt politisch sein, ohne es zu merken. draketo.de
[signature.asc (application/pgp-signature, inline)]
bug-guix <at> gnu.org
:bug#62395
; Package guix
.
(Sun, 26 Mar 2023 13:43:01 GMT) Full text and rfc822 format available.Message #8 received at 62395 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: "Dr. Arne Babenhauserheide" <arne_bab <at> web.de> Cc: 62395 <at> debbugs.gnu.org Subject: Re: bug#62395: [PATCH] Tunable guile <at> 3.0.9t package Date: Sun, 26 Mar 2023 15:42:04 +0200
Hi, "Dr. Arne Babenhauserheide" <arne_bab <at> web.de> skribis: > The attached patch adds a guile <at> 3.0.9t package that enables CPU > architecture tuning for Guile and for a specialized libgc. > > It creates new packages to avoid causing rebuilds. Marking a package as tunable does not involve any rebuilds, by design: https://hpc.guix.info/blog/2022/01/tuning-packages-for-a-cpu-micro-architecture/ Thus there’s no need to create package variants. > The results of a benchmark are still not fully conclusive: regular Guile > seems to be slightly slower in the Geometric mean of all tests, but > there are benchmarks where a tuned Guile is slower. > > Note that this is tuning for znver3 while I actually have znver4, but > support for the correct compile-target will only arrive with GCC 13. [...] > Guile tuned has a slowdown of 1.03512801239189 > Guile regular has a slowdown of 1.0504373210343294 > > This suggests that the regular Guile is 1.48% slower than tuned Guile. > > Since I have no errorbars, I cannot say whether this is significant. As far as I know, there’s no reason why Guile’s C code would benefit from ISA extensions (we’re mostly talking about vector instructions like those of AVX). The only part in libguile that’s performance-critical is the VM engine—but I don’t see how that code could benefit from vector instructions. Likewise, I doubt libgc build with ‘-march=znver3’ has any chance of being any faster; most likely, the generated code is close to the baseline. For these reasons, I’m reluctant to this patch. Tuning should be done only on packages where it makes sense, typically linear algebra code, image/video processing, and so on. WDYT? Ludo’.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.