libera/#sicl - IRC Chatlog
Search
16:06:12
kingcons
bike: Apologies if this seems out of left field but I saw the GC discussion in logs and wondered if you were had seen / are aware of whippet as an option? https://github.com/wingo/whippet
16:06:12
Colleen
kingcons: scymtym said at 2023.12.15 15:15:39: it is true that 6EQL specializers work in both cases, however instances of standard classes also allow classes as specializers and thus specialization and generalization of "kinds"
16:06:12
Colleen
kingcons: scymtym said at 2023.12.15 15:16:24: for example, a method could be specialized to a "superkind" of multiple "kinds" instead of having to write multiple 6EQL-specialized methods
16:06:49
kingcons
Heh, I haven't signed in for a while. Also, that makes sense, should've considered that.
16:07:31
kingcons
Anyway, whippet may not be a better fit than Mmtk for clasp / maclina but given that it was designed to be easy to integrate with an existing scheme system I thought it might be interesting.
17:23:08
yitzi
scymtym: I'm not sure if I made it clear before, but Quaviver should signal floating-point-underflow for exponents that are too small....for your experiments using Quaviver from Eclector.
17:33:05
scymtym
yitzi: i don't think i have a test for that yet but i assume it would work like the overflow case for too large exponents?
17:43:39
yitzi
I would think so. You could just try to read 1e-1000000, etc. If you want the tests to be very fine grained you could extract the exponent from LEAST-POSITIVE-SINGLE-FLOAT, or use (quaviver:min-exponent 'single-float)
17:46:44
yitzi
paulapatience: I have the basic outline of a stream interface read-digits, write-digits, read-number, write-number worked out. Its still very rough around the edges, but I think it has potential.
17:52:02
scymtym
i did some benchmarks with "my" jaffer implementation vs. liebler vs. the current Eclector code as a baseline. i had to tweak liebler a bit to be on par with the jaffer implementation. if there was a way to get rid of the dispatch overhead, liebler could the fastest implementation
18:02:54
scymtym
i didn't change anything about the dispatch. i added type declarations and further split some cases so that what was previously a full call to 06ASH could be optimized due to the tighter inferred types
18:07:36
yitzi
Hmmm... how did you benchmark them? For me liebler is already 4 times faster then jaffer.
18:13:33
scymtym
i called the token conversion function many times for each implementation. i should probably have included quaviver/jaffer in the comparison. when i say "my" jaffer, i mean the one from the eclector github issue
18:18:08
yitzi
I started off with one of the jaffer implementations from that issue, but then ended up writing a version from scratch via the paper. One thing I am little concerned about in some of the versions on the Eclector issue is that there are places where FLOAT is being called on a what could be a bignum, which to me seems like it is just resorting to whatever algorithm the underlying implementation is using.
18:30:17
scymtym
yes. i looked at the profile to ensure the majority of the time was spent in the float conversion which was the case for all implementations
18:36:09
yitzi
Do you mean in CL:FLOAT or just the algorithm overall? I ask because liebler shouldn't be spending any significant time in CL:FLOAT.
18:37:19
scymtym
sorry, i meant the bunch-of-integers to float conversion overall as opposed to the surrounding token processing
18:51:43
yitzi
Hopefully this is somewhat equivalent to your benchmark...with some random number strings. https://plaster.tymoon.eu/view/4485
18:55:08
scymtym
yeah, similar. maybe cycle through the values instead of calling 06RANDOM inside the loop? not sure if it matters but i could imagine 06RANDOM being significant in this context
18:58:12
yitzi
With those changes I get 567 microseconds on master and 374 microseconds on quaviver.
19:07:38
craigbro
with sbcl and latest main, I am getting a failure to find a sicl-environment as needed by sicl-boot-base. I see defsystems for "sicl-environment-((in|ex)trindic|shared)" but no "sicl-enviroment" as needed by Code/Boot/sicl-boot-base.asd
19:32:27
craigbro
I have a patch to Specification/codify to use /usr/bin/env bash (i'm on nix) -- if I were to submit a diff, would it be via github pr? it's trivial enough to just relate it here perhaps
19:50:09
paulapatience
At that point I don't think bash is required for that script, plain /bin/sh should work
21:10:41
scymtym
yitzi: with your benchmark on my machine, i get https://plaster.tymoon.eu/view/4485#4486
21:26:26
scymtym
::notify yitzi i pushed sketches of the liebler optimizations into the liebler-optimizations branch in the quaviver repository. the main technique is to caculate backwards from the overflow checks with 06Q to derive overflow checks with 06EXPONENT since those will allow tighter bounds for more computatonns including 06ASH and arithmetic
23:18:18
yitzi
scymtym: If you have time, can you try the benchmark with leibler from the main branch without your optimizations? I am curious how some of our recent math optimizations will affect the timings.
23:18:18
Colleen
yitzi: scymtym said 1 hour, 51 minutes ago: i pushed sketches of the liebler optimizations into the liebler-optimizations branch in the quaviver repository. the main technique is to caculate backwards from the overflow checks with 06Q to derive overflow checks with 06EXPONENT since those will allow tighter bounds for more computatonns including 06ASH and arithmetic