github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
01:00
MasterDuke joined,
MasterDuke left,
MasterDuke joined
01:06
sena_kun left
02:25
BeaconAlumna left
03:42
Kaiepi left
03:46
Kaiepi joined
03:58
Kaiepi left
04:04
Kaiepi joined
04:38
Woodi joined
04:58
Kaiepi left
04:59
Kaiepi joined
05:11
Kaiepi left
05:17
Kaiepi joined
05:23
Kaiepi left,
Kaiepi joined
06:11
Kaiepi left
06:21
Kaiepi joined
06:22
domidumont joined
07:07
patrickb joined
07:57
zakharyas joined
07:58
Kaiepi left
08:01
Kaiepi joined
08:08
sena_kun joined
08:18
brrt joined
08:27
Kaiepi left
08:28
Kaiepi joined
09:01
zakharyas left
|
|||
jnthn | o/ | 09:16 | |
timotimo | \o | ||
i'll reboot my machine after having installed what seems like a few months worth of updates | |||
and we're back | 09:20 | ||
jnthn | :) | 09:21 | |
I can replicate the "tests are alright without the JIT" here on my office machine too. Hmm. | |||
ooh, the plot thickens | 09:23 | ||
Think it's OK with the expression JIT disabled too | |||
timotimo | so the exprjit is missing some update for recent changes perhaps? | 09:24 | |
jnthn | ooh, I *did* an expr jit change | ||
I musta screwed it up | |||
(template: sp_p6oget_o | 09:25 | ||
- (let: (($val (load (add (^p6obody $1) $2) ptr_sz))) | |||
- (if (nz $val) | |||
- $val | |||
- (^vmnull)))) | |||
+ (load (add (^p6obody $1) $2) ptr_sz)) | |||
Basically, wanted to remove the null check | |||
timotimo | i mean it doesn't look wrong to me | 09:26 | |
jnthn | Trying with that reverted | ||
ah, still failures | 09:27 | ||
That was the only expression JIT change in my branch | 09:28 | ||
timotimo | odd. perhaps there's some assumption somewhere else that's now being violated | 09:29 | |
you can try the jit bisecting tool | |||
jnthn | Yeah, feels like it | ||
jnthn waits for the bisect tool's verdict :) | 09:47 | ||
OK, it found it (apparently), what output do I get? | 09:50 | ||
09:51
brrt left
|
|||
jnthn | ah, there's a file wiht the frame/bb number :) | 09:51 | |
timotimo | if i remember correctly it also gives you a diff between the jit versions? or maybe you have to objdump and diff it yourself? it's been quite a while | 09:53 | |
09:54
domidumont left
|
|||
jnthn | Not sure, and I'm a tad dubious about the results, since I think maybe the test is affected by hash randomization | 09:54 | |
timotimo | ah damn | 09:55 | |
we don't happen to have a way to turn hash randomization off at build time? | |||
jnthn | Not a good one, I don't think | 09:56 | |
I can hack it in though | |||
OK, it came out the same anyway | 10:04 | ||
grrr, I really don't get what's going on here :S | 10:14 | ||
You'd think disabling expr jit templates to cut out more of the block that's broken would help, but it doesn't at all | |||
timotimo | we could try waiting for brrt | ||
jnthn | Yeah, I think I'll see if brrt++ can help | 10:15 | |
And in the meantime just disable expr jit for running tests :) | |||
timotimo | aye | ||
jnthn | What I want to do next is rebase my more-pea onto this branch | ||
timotimo | in the future: write a confprog that turns off expr jit for just that one frame that's broken ;) ;) | ||
oh yes! | |||
jnthn | And see if things work as nicely as I hope | ||
I may first rebase this branch on master, though | 10:16 | ||
timotimo | good call | ||
jnthn | oh, it's already up to date | ||
oh, it's the Rakudo one that isn't, OK :) | |||
10:16
Kaiepi left
|
|||
Geth | MoarVM/more-pea: 47 commits pushed by (Jonathan Worthington)++ review: github.com/MoarVM/MoarVM/compare/6...a889604707 |
10:25 | |
MoarVM/more-pea: f558d3dd2a | (Jonathan Worthington)++ | src/spesh/pea.c Recognize sp_bind_o_nowb in PEA |
10:26 | ||
MoarVM: Kaiepi++ created pull request #1114: Implement freemem and totalmem ops |
10:39 | ||
10:40
Kaiepi joined
11:36
Kaiepi left
11:37
Kaiepi joined
11:39
domidumont joined
11:45
Kaiepi left
11:50
ggoebel left
11:51
Kaiepi joined
11:59
Kaiepi left
12:00
Kaiepi joined
12:28
BinGOs left,
BinGOs joined
|
|||
Geth | MoarVM/p6o-setup: 4fddd3a298 | (Jonathan Worthington)++ | src/6model/reprs/P6opaque.c Set facts on generated object registers To improve the optimizations that can then be performed on them. |
12:35 | |
MoarVM/p6o-setup: a700e01c15 | (Jonathan Worthington)++ | src/6model/reprs/P6opaque.c Re-use spesh slots in P6opaque opts None of these need a distinctive slot of their own. Avoids quite a lot of duplicate slots. |
|||
MoarVM/p6o-setup: be9811cb99 | (Jonathan Worthington)++ | src/6model/reprs/P6opaque.c Don't emit setup for vivify-on-access attributes |
|||
jnthn | Turns out more-pea was missing some rather important facts :) | ||
timotimo | adding facts seems really easy to miss :) | 12:37 | |
12:37
Kaiepi left
12:38
Kaypie joined
12:39
Kaypie left
12:40
Kaypie joined
|
|||
Geth | MoarVM/more-pea: 48 commits pushed by (Jonathan Worthington)++ review: github.com/MoarVM/MoarVM/compare/f...26992e087d |
12:45 | |
jnthn | Another rebase, to get the facts | ||
Now it explodes very loudly because...when I put in materialization I didn't check for if any of the attributes were also objects that need materialization :) | 12:46 | ||
Which was on my todo list, I just didn't have an example that reproduced it | |||
13:01
brrt joined
|
|||
brrt | \o | 13:01 | |
jnthn: can haz JITbug? | 13:02 | ||
jnthn | brrt: Yes; you need the p6o-setup branches in MoarVM and Rakudo. Spectest with MVM_SPESH_BLOCKING=1 (and perhaps with a small nursery to provoke more crashes). | 13:04 | |
There's crashes, and they vanish with MVM_JIT_EXPR_DISABLE=1 | |||
It looks like use of outdated pointer or missing wb | 13:05 | ||
brrt | hmmm | ||
Ok, I'll build and see what happens | |||
jnthn | Ah, and moar with --debug to get assertions checked, since it's often triggering an assertion failure | 13:06 | |
brrt virtually always compiles moar with --debug | |||
I have no idea how fast moar really is :-p | |||
jnthn | Well, if it were fast enough already we'd not be doing all this work ;) | 13:08 | |
brrt | If it was fast enough, we'd still have bugs to fix :-P | 13:13 | |
have I told the plan of the linear IR refactor already? | 13:14 | ||
timotimo | i've seen a post about it on the tpf blog | ||
brrt | yes, that thing | 13:15 | |
:o I can't configure NQP? | |||
"Can't locate object method "note" via package "NQP::Config::NQP" at /home/bart/Code/nqp/tools/lib/NQP/Config/NQP.pm line 35." | 13:16 | ||
jnthn | git submoduloe update? | 13:17 | |
Kaypie | ^ this on nqp and rakudo | 13:38 | |
then make distclean and ./Configure.pl again | 13:39 | ||
oh i'm late | |||
13:43
AlexDaniel joined
|
|||
Geth | MoarVM/more-pea: 87d0e6fe28 | (Jonathan Worthington)++ | src/spesh/pea.c Materialize implicated objects When we have an object that we materialize, it may have attributes that are also objects we need to materialize. Do that. |
13:45 | |
jnthn | Darn, still segv... | 13:46 | |
Grr, what on earth has it done.. | 13:53 | ||
Hm, maybe lost an alias while eliminating a guard. | 14:02 | ||
timotimo | because the guard was from rx to ry? | 14:06 | |
brrt | oh, that's the thing | 14:14 | |
Geth | MoarVM/more-pea: 9ba8e10733 | (Jonathan Worthington)++ | src/spesh/pea.c Track aliasing by a settified guard |
14:25 | |
jnthn | Darn, and now it's correct it doesn't successfully deal with the scalar containers... | 14:26 | |
PEA: considering frame 'new' (348) | 14:27 | ||
PEA: replacement of Scalar impossible due to PHI | |||
timotimo | ;( | 14:28 | |
jnthn | Huh, the PHI is due to an introduced frame handler coming out of nowhere o.O | 14:34 | |
oh, there's the inline boundary marker, hmm | 14:36 | ||
m: say 2147483648.base(2) | 14:46 | ||
camelia | 10000000000000000000000000000000 | ||
jnthn | m: say 2147483648.base(2).chars | ||
camelia | 32 | ||
timotimo | is that how much faster some code got? :) :) | 14:59 | |
jnthn | No, just checking it really works as a bit mask :P | 15:00 | |
timotimo | ah | ||
jnthn | Tssk, so the PHI that it grumbles about doesn't even exist by the final output; | 15:01 | |
Tssk, so the PHI that it grumbles about doesn't even exist by the final output | |||
oops, up key + edit isn't an IRC thing :P | |||
timotimo | :) | 15:02 | |
Geth | MoarVM/more-pea: 5a2151a431 | (Jonathan Worthington)++ | src/spesh/optimize.c Eliminate dead instructions before PEA Since otherwise we can end up with dead PHIs and other things that cause PEA to bail out. |
15:14 | |
MoarVM/more-pea: c01456cd92 | (Jonathan Worthington)++ | src/spesh/pea.c Report register blocking PEA |
|||
jnthn | Ah, back to segv :P | 15:15 | |
15:17
brrt left
|
|||
dogbert17 | jnthn: are you working on two MoarVM branches at the same time or have you merged them? | 15:32 | |
timotimo | i believe more-pea was rebased on top of p6o-setup maybe? | 15:34 | |
Geth | MoarVM/more-pea: 432b05334b | (Jonathan Worthington)++ | src/spesh/pea.c When guard is on eliminated allocation, delete it Instead of turning it into a zombie `set`. |
||
jnthn | dogbert17: p6o-setup is probably an expr jit bug away from mergability, whereas more-pea is quite a bit further off :) | ||
OK, hurrah, finally, it eliminates the scalar allocations in the Point object | 15:35 | ||
dogbert17 | that sounds very promising | 15:38 | |
jnthn | Well, both eliminates them and doesn't explode :) | 15:39 | |
So now in the point benchmark, per iteration, it elimiantes the Point object itself, both Scalar containers of its attributes, the Hash wrapper (but not the VM-level hash inside of it) and two intermediate Int objects | 15:45 | ||
Spectest is very explosive, alas. | |||
dogbert17 | BOOM | 15:46 | |
jnthn | Ah, actually not so awful | 15:48 | |
16:18
Kaypie is now known as Kaiepi
|
|||
jnthn | Hm, I guess the EA can do everything that box/unbox pair elimination can do, and having that in a post-inline pass after PEA also means PEA doesn't get to see decompositions that it would work with | 16:20 | |
So probably that logic can go away | |||
Bit of a refactor though...bit tired to dig into that right now | 16:27 | ||
Geth | MoarVM/more-pea: 4c41ad121c | (Jonathan Worthington)++ | src/spesh/pea.c Correct a comment; sena_kun++ |
16:28 | |
dogbert17 | jnthn: perhaps it's time for a cold beverage? | 16:30 | |
16:31
patrickb left
|
|||
jnthn | This is odd...Think so :) | 16:31 | |
Ah, I see what it's doing | 16:32 | ||
But yeah, later | |||
Cool... | 16:43 | ||
Silly complex number program: my $total-re = 0; for ^10_000_000 { my $x = 5 + 2i; my $y = 10 + 3i; my $z = $x * $x + $y; $total-re = $total-re + $z.re } | |||
3.2s without PEA | |||
0.81s with PEA | 16:44 | ||
m: say 0.81 / 3.2 | |||
camelia | 0.253125 | ||
jnthn | And it doesn't seem to be dealing with Num allocations yet, so there's more to win | ||
oh, no, I guess complex uses native num :) | 16:45 | ||
So not | |||
But it eliminates all 3 scalars in the loop ($xy, $y, $z), two Complex allocations, and gets rid of 5 guards. | 16:47 | ||
sena_kun | gist.github.com/Altai-man/307a095d...8a243bd8af <- is it a correct transcription? | 16:50 | |
ah, nope | |||
fixed an operator | 16:51 | ||
cannot run the perl6 version to compare times though. :P | 16:52 | ||
m: say 3.12 / 8.54 | 16:53 | ||
camelia | 0.36534 | ||
jnthn | sena_kun: Yes, that looks right | ||
sena_kun | even on 2019.03 perl 6 is faster for me, though, 3~ seconds vs 8.5. | ||
jnthn | I tried a Perl 5 one but it's still running...I musta got something wrong in this | 16:54 | |
Huh, just 100,000 iterations takes 6.35s | 16:55 | ||
sena_kun | in 5? | ||
jnthn | Yes | 16:56 | |
sena_kun | ooc, can you run py gist above on your machine? | ||
jnthn | use Math::Complex; my $total_re = 0; for (1..100_000) { my $x = 5 + 2*i; my $y = 10 + 3*i; my $z = $x * $x + $y; $total_re = $total_re + $z->Re }; say $total_re | ||
6.36s here | 16:57 | ||
m: say 0.81 / 6.36 | 16:58 | ||
camelia | 0.127358 | ||
jnthn | m: say 6.36 / 0.81 | ||
camelia | 7.851852 | ||
sena_kun | this is a win. :) | 16:59 | |
jnthn | I guess Python is a more fair thing to compare against than Perl 5, given it's built in rather than a module. | ||
Ah, the python one actually is 5.71s if you transcribe it a tad better | 17:03 | ||
Can do x = complex(5, 2) | |||
Ruby has them built in too, and it clocks in at 7.69s | 17:04 | ||
sena_kun | still not beats a 3.12 on vanilla 03. | ||
jnthn | Indeed, I wasn't expecting that | 17:05 | |
Found a faster way to write it in Perl 5, which gets it down to 2.1s for the 100,000 iterations | 17:09 | ||
3m27s for the ten million iterations | 17:13 | ||
dinner & | 17:18 | ||
17:29
robertle joined
17:31
patrickb joined
17:33
brrt joined
18:18
Kaiepi left,
Kaiepi joined
18:20
domidumont left
18:24
MasterDuke left
18:29
MasterDuke joined,
MasterDuke left,
MasterDuke joined
|
|||
timotimo | wow | 18:33 | |
MasterDuke | timotimo: any opinion on github.com/MoarVM/MoarVM/pull/1111 ? ok as is? if so, wait until after the next release to merge? | 19:04 | |
19:08
squashable6 left
19:11
squashable6 joined
|
|||
timotimo | i'm not actually sure if the results are totally correct | 19:16 | |
i mean i don't see why the code would be wrong, either. not that i have spent a lot of time looking at it | |||
19:17
brrt left
|
|||
MasterDuke | i haven't found out a good way to do any sort of deterministic before/after comparison | 19:18 | |
timotimo | yeah :( | ||
20:11
robertle left
20:25
brrt joined
|
|||
brrt | jnthn: haven't had the chance to debug it yet | 20:28 | |
jnthn | brrt: No worries, it may well be smart to merge that after this month's release anyway :) So if it takes some days to get around to it, no worries. | 20:34 | |
21:33
AlexDaniel left
21:44
AlexDaniel joined
22:11
brrt left
22:21
AlexDaniel left
22:39
patrickb left
23:57
sena_kun left
|