github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:00 p6bannerbot sets mode: +v avar
timotimo .tell brrt and 1e0/$x.Num makes it go from ~8.25s to ~6.6s 00:01
yoleaux timotimo: I'll pass your message to brrt.
timotimo .tell brrt have you considered removing the hundreds of blank spaces at the end of lines from the .nqp version for much faster compilation? :D :D 00:08
yoleaux timotimo: I'll pass your message to brrt.
timotimo AlexDaniel: do we write a changelog based on changes since 2018.06 or the theoretical release date of 2018.07? 00:12
AlexDaniel since 2018.06 00:13
timotimo jeez, i've done barely anything in moar's code in that time 00:16
also: moar's code, haha, say that out loud
-- --- .- .-. ...- --
lizmat beep beep beep beeeeep bbeeeeep beeeeep beep beep beep 00:17
sleep&
00:30 Guest16880 joined 00:31 Guest16880 left 00:50 theShirbiny joined 00:51 p6bannerbot sets mode: +v theShirbiny, theShirbiny left 01:00 GTAXL13 joined 01:01 p6bannerbot sets mode: +v GTAXL13 01:08 GTAXL13 left 01:28 avar left 01:45 avar joined, avar left, avar joined, p6bannerbot sets mode: +v avar 01:46 p6bannerbot sets mode: +v avar 01:49 Alistair19 joined 01:50 Alistair19 left 02:00 arooni25 joined, p6bannerbot sets mode: +v arooni25 02:01 arooni25 left
timotimo this is not going to matter in the slightest, but: 02:20
QASTNode's "name" method (from QAST::Op) somehow manages to use getspeshslot on the same spesh slot for both the argument's value and the one it compares with, i.e. NO_VALUE, but it has a PHI in between that somehow eats its Known Value, and so even though the value parameter wasn't passed, the code to set the name is still in the result 02:22
that PHI is actually in the middle of the block 02:24
02:27 foddo12 joined 02:28 p6bannerbot sets mode: +v foddo12 02:33 foddo12 left
timotimo perhaps for tomorrow: bool_I exprjit template that handles the smallbigint case in-line, and perhaps a lego jit version, too 02:42
mhh, get_bigint_body goes through get_boxed_ref, that's not quite so awesome for performance, so that could really be worth something 02:43
will need an sp_bool_I for ensuring the type is known
hm, the exprjit is kicked out by an sp_guardconc right in front of the bool_I; looking at Rakudo/Iterator:2330, "push-all" 02:44
03:01 rkta joined 03:02 p6bannerbot sets mode: +v rkta, rkta left 04:44 HollyW00d11 joined 04:45 p6bannerbot sets mode: +v HollyW00d11 04:49 HollyW00d11 left 05:37 AlexDani` joined, p6bannerbot sets mode: +v AlexDani` 05:41 AlexDaniel left 05:44 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined, verne.freenode.net sets mode: +v AlexDaniel, p6bannerbot sets mode: +v AlexDaniel 05:58 TheoM joined 05:59 TheoM left 06:03 A5A joined 06:04 p6bannerbot sets mode: +v A5A 06:06 A5A left 06:08 Waldo29 joined, p6bannerbot sets mode: +v Waldo29 06:12 Waldo29 left 06:26 domidumont joined 06:27 p6bannerbot sets mode: +v domidumont 06:30 domidumont left 06:31 domidumont joined, p6bannerbot sets mode: +v domidumont 06:56 wizonesolutions5 joined 06:57 p6bannerbot sets mode: +v wizonesolutions5 06:58 BenLand100 joined 06:59 BenLand100 left, wizonesolutions5 left 07:10 Waldo14 joined 07:11 brrt joined, p6bannerbot sets mode: +v Waldo14, p6bannerbot sets mode: +v brrt 07:14 Waldo14 left
brrt timotimo: it is, but note that the 'version that runs on both perls' is exactly how a naive perl programmer would write it 07:45
yoleaux 18 Aug 2018 23:59Z <timotimo> brrt: adding up consecutive reciprocals, isn't that a very, very bad case for rationals? making $x num doesn't help because it'll still first do rational for 1/$x and then turn it into Num; using $x += 1/$_.Num is loads faster
00:01Z <timotimo> brrt: and 1e0/$x.Num makes it go from ~8.25s to ~6.6s
00:08Z <timotimo> brrt: have you considered removing the hundreds of blank spaces at the end of lines from the .nqp version for much faster compilation? :D :D
nwc10 good *, brrt 07:46
brrt ohai nwc10
how was TPC
nwc10 It was In Glasgow :-) 07:47
Good
Nearly every talk I went to was good. (Which was better (for me) than previous years 07:48
Watch the video of the interview with Gloria (once its up) if you didn't see it live - I liked that "keynote" best
brrt I'll do that
holy **** 07:49
gist.github.com/bdw/42819001c1a083...procal-nqp - if I change the $i from int to num
my runtime goes down to 0.289s 07:50
if i do the same in C, runtime drops to 0.219s
nwc10 "WTF?"
Hope the video for this talk is up soon: act.perlconference.org/tpc-2018-gla.../talk/7428
brrt m: say 0.289/0.219
camelia 1.319635
brrt 30% within C. WTF
nwc10 (No bot to say "Building Privacy In" by "John Lightsey (ā€ŽJ.D.)") 07:51
brrt not yet, but if it needs to do anything fast, build it in NQP 07:52
nwc10 venue was great (apart from having flat seating, just like last year) - food at venue was better than some places in the evening, staff also as good or better than good restaurant staff
brrt (btw, 2.48s for same, without JIT) 07:53
nwc10 next year is Riga (like 2011)
brrt I heard. I forgot which of the baltic countries that is
nwc10 Latvia 07:54
at the moment I think that your "reciprocal.pl6" is no different from "reciprocal.pl" - did you forget to put an ` int` back in the line with the `my` ? 07:56
07:59 jfmcarreira7 joined 08:00 jfmcarreira7 left
brrt let me check for a second 08:08
yeah, that's not right 08:12
i miscopy-pasted 08:13
but, adding 'my num $x' slows it from 31s to 45s 08:14
so
08:18 domidumont left, aykut4 joined, aykut4 left
brrt anyway, looking at the assembly, i'm guessing that this benchmark spends most of it's time in 'div' 08:23
08:43 lizmat left
mst brrt: "warning: benchmark may be a junior web developer" 08:52
09:00 brrt left, brrt joined 09:01 p6bannerbot sets mode: +v brrt
samcv good * 09:07
hey mst, brrt
09:21 abrotman14 joined 09:22 p6bannerbot sets mode: +v abrotman14
brrt ohai samcv 09:25
mst: i'm not sure I follow :-) 09:26
mst spends most of its time in <div>
09:26 abrotman14 left 09:27 Guest11555 joined 09:28 p6bannerbot sets mode: +v Guest11555
brrt haha 09:29
nwc10 :-)
I completely missed that connection.
brrt yeah, me too 09:30
stmuk I still have that awful black drink from riga 2011 :) 09:32
nwc10 I think that the sysadmins have a bottle in their office as a result of a PgConf
09:33 Guest11555 left 09:35 noah21 joined 09:36 p6bannerbot sets mode: +v noah21
nwc10 yoleaux: .tell jnthn MVM_SPESH_NODELAY=1 breaks Rakudo setting -- paste.scsys.co.uk/581482 -- problem probably about a week old 09:42
Stage parse : Error while compiling, type X::Bind::NativeType
name: $!name
at line 19587, near " name),\n "
09:43 noah21 left 10:11 irv joined, p6bannerbot sets mode: +v irv 10:13 irv left, brrt left 10:15 lizmat joined, Edane14 joined, p6bannerbot sets mode: +v lizmat, p6bannerbot sets mode: +v Edane14 10:17 Edane14 left 10:18 Guest88573 joined 10:19 p6bannerbot sets mode: +v Guest88573 10:21 Guest88573 left 10:28 surfist9 joined 10:29 surfist9 left 10:38 domidumont joined, p6bannerbot sets mode: +v domidumont 10:41 brrt joined 10:42 p6bannerbot sets mode: +v brrt 10:46 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo
timotimo nwc10: is that with postrelease-opts or master moarvm? 11:26
11:36 brrt left 11:38 ZzZombo left 11:42 ms78217 joined 11:43 p6bannerbot sets mode: +v ms78217
jnthn is curious about exactly what timotimo asked, though either way I ain't planning on touching master this side of the release. :) 11:43
11:45 ms78217 left
timotimo i'm confused by that line. did you mean "why" rather than "what"? 11:48
jnthn timotimo: No, I meant what. As in, "I have exactly the same question" :) 11:49
timotimo oooh
i think my brain may have flipped "exactly what" and "what exactly" around 11:50
jnthn Yes, an sp_bool_I would be good, btw
11:53 domidumont left
timotimo huh, is there a good reason why bytecode positions in the "latest statistics" view aren't sorted? 12:01
i kind of assumed we stored them sorted for better lookup in the stats storage and such, but perhaps that's just not how it's implemented 12:05
nwc10 master
12:07 poutine14 joined 12:08 p6bannerbot sets mode: +v poutine14 12:09 poutine14 left
timotimo so, i have this SDL2 example "particles". it has an update sub that loops through the indices for positions (in a native num array with x and y values stored pairwise) and lifetimes (a native num array with just one entry per particle) and either moves them along their trajectory or, if their lifetime has reached 0, respawns them at the origin with random trajectory and lifetime 12:12
it suffers noticably from spesh logging ending too soon, where in the regular mode it barely has any of the invocations logged at all (many postcircumfix:<[ ]> invocations) 12:13
i suppose in the future we'll want to keep some logging instructions in the speshed frames and re-spesh when new information becomes available 12:14
jnthn Does it trigger deopt? 12:15
Or just hit a certain specialization, or?
timotimo it just makes a single specialization, which is a certain specialization - the update sub doesn't have any arguments :)- 12:16
jnthn I started writing up the "make `$_` not be dynamic" thing, but as I was explaining why PEA can't help much I realized that maybe it could
timotimo oh, it does have a single argument, but actually the interesting part being speshed is the inner loop
github.com/timo/SDL2_raw-p6/blob/m...les.p6#L43 12:17
it's not exactly the same code locally, i think, but it's very close
removing the "if (rand < df) {" condition makes it better because then it'll not skip as many runs at the start of the program
also, why did i put so many parenthesis for ifs there? :D 12:18
jnthn In that if we were to allocate registers for each lexical, and just flush it at the point that it escapes, then if it never escapes we'd be good
timotimo sounds good at first glance 12:19
jnthn That still only handles the cases where we fully inline or at least where we only rarely taken a code path that isn't inlined, though
*take
timotimo that also deals nicely with situations like "infix:</> can invoke the division by zero error, but in regular code it barely ever will"
jnthn The moment we actually make an invocation which makes a new callframe, we have to consider it as escaping 12:20
timotimo right
jnthn Whereas were it not dynamic it'd be subject to local analysis and the static optimizer could do the usual lexical -> local lowering trick
timotimo *nod* 12:21
i'll spend a bit of time on the sofa with the cat :3 12:22
12:51 pskosinski11 joined, p6bannerbot sets mode: +v pskosinski11 12:53 pskosinski11 left, reportable6 left 12:54 reportable6 joined, p6bannerbot sets mode: +v reportable6 12:55 EvanR1 joined 12:56 p6bannerbot sets mode: +v EvanR1
nwc10 jnthn: master (the setting failure) 12:57
12:58 EvanR1 left 13:05 ensyde joined 13:06 p6bannerbot sets mode: +v ensyde
jnthn github.com/perl6/6.d-prep/issues/10 # from last night's discussion 13:07
13:07 ensyde left
jnthn nwc10: OK, will look when I get chance (though it'll probably be quite a bug hunt :/) 13:15
13:25 Humbedooh7 joined 13:26 p6bannerbot sets mode: +v Humbedooh7 13:28 kspencer15 joined 13:29 p6bannerbot sets mode: +v kspencer15 13:30 Humbedooh7 left 13:31 nitrix22 joined 13:32 p6bannerbot sets mode: +v nitrix22, kspencer15 left 13:35 nitrix22 left 13:41 domidumont joined, p6bannerbot sets mode: +v domidumont 13:55 domidumont left 14:14 dalek left 14:15 zakharyas joined 14:16 p6bannerbot sets mode: +v zakharyas 14:26 Geth left
timotimo rakudo compilation dies even earlier for me, though 15:04
with NODELAY
/home/timo/perl6/install/bin/nqp-m --module-path=blib --target=mbc --output=blib/Perl6/Metamodel.moarvm --encoding=utf8 \
gen/moar/Metamodel.nqp
Incompatible MROs in P6opaque rebless for types QAST::Var and QAST::IVal+{QAST::SpecialArg}
jnthn timotimo: Does it happen on postrelease-opts too? 15:09
There's one fix in there that's not in master 15:10
timotimo ah, let's see 15:12
15:12 lizmat left
timotimo yes, exact same message 15:13
jnthn Ah well, at least things didn't get worse :) 15:15
timotimo it's the colon pairs, man. i tell ya! 15:19
(because it crashes in the colonpair method in NQP.nqp 15:20
15:21 lizmat joined 15:22 p6bannerbot sets mode: +v lizmat
jnthn
.oO( pain in the colon... )
15:23
15:31 Techman3 joined 15:32 p6bannerbot sets mode: +v Techman3 15:34 Techman3 left
timotimo huh 15:40
it got past that error
wow, a segfault even 15:41
i don't think i'm in the mindspace to get anything done with this 15:52
15:55 fake_space_whale joined
timotimo hm. perhaps i just forgot the Configure.pl step, but my moar --version didn't correspond to the postrelease-opts branch. perhaps i gave incorrect information 15:55
15:56 p6bannerbot sets mode: +v fake_space_whale
timotimo OK, i get an error during stage parse, but not a segfault 15:57
Stage parse : Error while compiling, type X::Attribute::Undeclared package-name: <anon|25> package-kind: class what: attribute symbol: $!iter at line 6867, near ",\n " 15:58
Error while compiling, type X::Bind::NativeType name: $!name at line 19586, near " name),\n " 15:59
16:01 brrt joined 16:02 p6bannerbot sets mode: +v brrt
timotimo now stage parse segfaults without NODELAY o_O 16:04
er
stage optimize
actually, i'll try rebooting my machine 16:05
it's not feeling very good at the moment
16:07 brrt left 16:09 Zx329 joined 16:10 p6bannerbot sets mode: +v Zx329
timotimo i mean, most likely it's just google-chrome was hogging all resources because of some misbehaving site or plugin or whatever 16:11
but updates have been piling up anyway, so a reboot would be fine anyway
16:11 Zx329 left 16:12 ecx86 joined, p6bannerbot sets mode: +v ecx86 16:13 Thanks joined 16:14 p6bannerbot sets mode: +v Thanks, Thanks left 16:18 lizmat left 16:19 ecx86 left 16:24 jpf1 left, nine left, Util left 16:25 nine_ joined, Util joined, masak joined, japhb_ joined, jpf1 joined, masak is now known as Guest85961, p6bannerbot sets mode: +v nine_, p6bannerbot sets mode: +v Util, p6bannerbot sets mode: +v Guest85961, p6bannerbot sets mode: +v japhb_ 16:26 p6bannerbot sets mode: +v jpf1, benchable6 left 16:27 committable6 left, greppable6 left 16:28 shareable6 left, statisfiable6 left, bisectable6 left, nativecallable6 left
timotimo it still segfaults in stage optimize, weird. 16:29
16:52 elenah22 joined 16:53 p6bannerbot sets mode: +v elenah22 16:54 elenah22 left
MasterDuke timotimo: i started adding support for subtraction and multiplication to github.com/rakudo/rakudo/pull/2228, but it got a bit more complicated 17:03
and then i realized that multiplication doesn't even work like addition and subtraction do, after trying mod, because i thought that might be useful 17:04
m: .say for (^4) + 2
camelia 2
3
4
5
MasterDuke m: .say for (^4) - 2 17:05
camelia -2
-1
0
1
MasterDuke m: .say for (^4) * 2
camelia 0
1
2
3
4
5
6
7
17:05 krushia joined 17:06 p6bannerbot sets mode: +v krushia
MasterDuke changing topics, MVM_SPESH_NODELAY=1 doesn't cause any problems during the rakudo compile for me 17:07
17:13 krushia left 17:14 committable6 joined 17:15 p6bannerbot sets mode: +v committable6 17:25 nativecallable6 joined, bisectable6 joined, p6bannerbot sets mode: +v nativecallable6, p6bannerbot sets mode: +v bisectable6 17:38 zakharyas left
timotimo m: .say for (2..4) * 2 17:48
camelia 4
5
6
7
8
timotimo MasterDuke: i'm not actually sure where the arithmetic is even implemented in your pull request
MasterDuke timotimo: i re-use get_bound 17:50
`timotimo: huh, that looks like an inconsistency (re `.say for (2..4) * 2` vs `.say for (^4) * 2`) 17:51
timotimo why?
that's just ((2*2)..(4*2))
just like ^5 + 1 is (0+1)..(4+1) 17:52
MasterDuke yeah, but it doesn't do that for (^4)
timotimo m: .say for (^4) * 2
camelia 0
1
2
3
4
5
6
7
timotimo that's (0*2)..^(4*2)
or do you think it should interpret the ^ before doing the calculation? 17:53
MasterDuke no, i guess i was thinking of it wrong
think it makes sense to add the other math operations? i was able to do addition by re-using get_bound as-is, but the others will require modifying it and optimize_for_range a bit 17:58
timotimo addition and subtraction are likely the most widely used 17:59
MasterDuke heh, you can do subtraction with my branch, as long as you express it as addition 18:02
e.g., `.say for (^4) + -2` does get the optimization 18:03
timotimo heh. 18:05
MasterDuke oh...wait... 18:06
uh, now i get `===SORRY!=== Unknown QAST node type NQPMu` 18:07
i hate that error, so unhelpful 18:08
timotimo it'd be cool to have kind of a trace to the node itself, like perhaps by having an exception handler on every level that prints out the current node's information and rethrows to the next levell 18:16
18:21 Guest85961 is now known as masak 18:23 greppable6 joined, greppable6 left 18:24 greppable6 joined 18:25 brrt joined, p6bannerbot sets mode: +v greppable6 18:26 p6bannerbot sets mode: +v brrt 18:27 benchable6 joined
timotimo spesh_inline_disable was enough to get core setting to build 18:28
at least that
18:28 p6bannerbot sets mode: +v benchable6
timotimo huh, interesting 18:31
MoarVM oops: Spesh: instruction box_i missing from define-use chain
i'm not sure why the check is even turned on %)
18:38 nativecallable6 left, benchable6 left, committable6 left, bisectable6 left, bloatable6 left, reportable6 left, squashable6 left, greppable6 left, coverable6 left, unicodable6 left, quotable6 left, undersightable6 left, notable6 left, domidumont joined 18:39 p6bannerbot sets mode: +v domidumont
brrt \o 18:44
timotimo the profiler no longer working is probably just because it doesn't use the usage chain API yet 18:57
19:02 domidumont left 19:07 Steinsplitter23 joined, Steinsplitter23 left
jnthn aha 19:08
$ MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1 ./nqp-m t/nqp/065-how.t
Incompatible MROs in P6opaque rebless for types QAST::SVal and QAST::IVal+{QAST::SpecialArg}
That's a rather smaller case than the setting :)
timotimo oh, nice 19:09
yeah, anything exploding in nqp code is so much better than in perl6 code
19:14 brrt left
jnthn Initial signs are that it's *not* a deopt bug. 19:19
Dammit, 29C is *not* the temperature for this :/
jnthn goes to buy ice cream
timotimo ice cream sounds lovely
19:21 Fuchs1 joined 19:22 p6bannerbot sets mode: +v Fuchs1 19:23 Fuchs1 left, brrt joined 19:24 p6bannerbot sets mode: +v brrt 19:26 maxalt5 joined, bloatable6 joined, notable6 joined, quotable6 joined, nativecallable6 joined, greppable6 joined, committable6 joined, releasable6 joined, coverable6 joined, shareable6 joined, bisectable6 joined, reportable6 joined, benchable6 joined, squashable6 joined, statisfiable6 joined, maxalt5 left, p6bannerbot sets mode: +v bloatable6 19:27 p6bannerbot sets mode: +v notable6, p6bannerbot left, p6bannerbot joined 19:41 thevdude11 joined 19:42 thevdude11 left
brrt i don't know if this is related to anything anyone would ever see, but I do think we need to fix MVM_jitcode_copy 19:54
and.... i'm kind of hesitant to do it because of release process stuff
(do it now, I mean)
masak can always do it in a branch 19:55
19:56 unicodable6 joined, evalable6 joined, undersightable6 joined
jnthn brrt: Could it have introduced SEGVs? 'cus master seems to have gained some... 20:09
brrt it could have, because we may be trying to free() some pages allocated by mmap, or unmap memory allocated by malloc 20:16
i'm not terribly sure since it would rely on cleanup of jit compiled frames, and that is rare in practice
hmm, i'll clean it up regardless
jnthn OK 20:22
brrt not sure why our bots don't work, but here's a PR: github.com/MoarVM/MoarVM/pull/944 20:37
20:42 brrt left 20:57 richardjohn28 joined 21:05 richardjohn28 left 21:23 avar left 21:28 avar joined, avar left, avar joined 21:29 lizmat joined 22:35 Kilo`byte joined 22:36 Kilo`byte left 22:55 stmuk_ joined 22:57 stmuk left 23:04 A5A joined, A5A left 23:21 stalled5 joined 23:22 stalled5 left 23:38 Guest94534 joined 23:39 Guest94534 left 23:42 Yatekii23 joined 23:43 Yatekii23 left
jnthn I've figured out that NQP test fail 23:54
The immediate cause is because I broke propagation of merged log guards by dropping the flag
However, the reason I did that is because it assumes that the immediate writer is the PHI where the merge happened 23:55
This is not the case.
At least, not always.
So anyway, we need to fix that properly.
I'm not doing that at 2am :)
But at least I know what to fix now
23:56 dalek joined, p6lert_ joined, Geth joined, synopsebot_ joined, SourceBaby left, synopsebot left, p6lert left
jnthn Probably we should just carry around a list of log guards in the facts that we depend on 23:57
And then just use all those log guards