01:03 FROGGS_ joined 02:21 lue joined 03:52 brother| joined, sergot_ joined 03:55 ilbot3 joined 04:11 ilbot3 joined 04:21 cognome joined 04:23 zakharyas joined 04:33 zakharyas1 joined 05:00 itz_ joined 05:10 japhb_ joined, btyler_ joined 06:05 itz joined 07:19 brrt joined
brrt \o 07:20
timotimo o/ 07:21
when gsoc is over, i'll be missing the rapid fire of new jit features :S 07:22
i suppose i'll just have to get my own hands dirty writing a bit of assembly for the jit :\
brrt i suspect the fire won't be so rapid anymore, no 07:31
i'm enrolled for my next year btw :-) 07:32
timotimo university?
brrt yes, in energy-and-environmental sciences 07:34
timotimo oh
that sounds good :)
brrt if all checks out i'm going to work on smart grid technology :-)
timotimo that's way cool. 07:36
brrt yeah, i hope it is 07:38
brb :-) 07:44
nwc10 timotimo: well volunteered :-) 07:50
moritz ... and energy-and-environmental folks have good chances to work in data centers too :-) 08:08
timotimo perl6 doesn't have good chances yet, but by the time brrt graduates maybe it will :P 08:09
jnthn morning o/ 08:19
nwc10 \o morning 08:25
08:48 brrt joined
brrt morning jnthn 08:49
08:51 klaas-janstol joined
brrt is wondering how to fast implement floor() in asm 08:53
jnthn is trying le_I and friends :)
moritz brrt: aren't there rounding primitives the in SSE instructions? 08:54
brrt i'd think so
but sse instruction set aren't exactly... ehm... googleable
timotimo jit operation implementation: where will it end?!
jnthn When we jitted all the ops that are likely to show up on hot paths :P 08:55
moritz softpixel.com/~cwright/programming/simd/sse.php
brrt hey, that's handy :-) 08:56
08:56 donaldh joined
moritz brrt: I just googled for 'rounding sse' :-) 08:56
brrt slight facepalm
timotimo: steve-yegge.blogspot.nl/2007/06/ric...-food.html 09:00
with regards to the question 'how long will we be busy with the JIT compiler' ;-) 09:01
nwc10 brrt: can you cheat - write C, get the compiler to output assembler, see what it chose? 09:07
brrt of course
thats exactly what my 'asmof' bash script does ;-)
nwc10 also, it occurred to me - IIRC it was timotimo who added "a" and aggregated the bail out logs
timotimo yup, that's me 09:08
nwc10 is it viable to fix it to only start logging bail out after stage 0?
in some way?
because basically stage 0 doesn't matter, and will solve itself after the next bootstrap update
timotimo a few weeks/months(?) earlier i suggested allowing to put some special character at the start or end of the env var to switch between append and overwrite
nwc10 one possible way is "rm" as part of the makefile at the end of stage 0
timotimo another is to just "make m-bootstrap-files"
you don't have to commit that
nwc10 aha that's probably the best way 09:09
timotimo it's the simplest at least
brrt i think that was very recent when you suggested that timotimo
jnthn Aye. And a bootstrap update even on my zippy machine is a few of seconds off every NQP build
timotimo nice.
jnthn So we might just want to go for it at some point soon anyway. 09:10
nwc10 other other thing I thought, which might be a repeat of what's already said, or might be "too early" - for things like "JIT a few bigint ops." - is it possible to programatticaly generate both the code in interp.c and the JIT code for the OP, from a common definition?
jnthn: parallel tests for NQP would also shave time, at least on POSIX platforms 09:11
jnthn How do we tweak the Makefile to have that happen? 09:16
moritz prove -j 4 09:17
09:17 lizmat joined
moritz that'll run 4 jobs in parallel, unconditionally 09:18
jnthn Yeah, I was more thinking "pay attention to the TEST_JOBS env var"
moritz (that is, independent of th enumber of cores)
brrt basically, floor() is a function call, and i'm wondering if it could not be 09:20
if that would be worth the trouble
nwc10 I don't know for x86 or x86_64
IIRC it's viable in ARM assembler
moritz jnthn: probably easist would be a small wrapper around prove that adds -j $ENV{TEST_JOBS} if $ENV{TEST_JOBS} is set 09:21
jnthn Right. Like a t/harness in Rakudo but simpler 09:22
moritz aye
09:23 FROGGS__ joined
dalek arVM: d85a1df | jnthn++ | src/jit/ (2 files):
JIT [eq|ne|lt|le|gt|ge]_I.
09:29
brrt it's basically, not so feasible to implement floor
cuz corner case
jnthn
.oO( a floord plan... )
moritz I wonder if it would be a (big?) speedup to first check if both bigints are actually stored as small integers, and if yes, use the direct comparison 09:34
brrt uhm, what is the plan in mod_n if any is NaN 09:35
timotimo i think it'd result in NaN? 09:36
dalek arVM: fb7a4a5 | jnthn++ | src/ (4 files):
JIT getlexouter.
09:39
jnthn BAIL: op <sp_guardcontconc>
Aww!
timotimo contconc does sound cute.
jnthn Bailing on it ain't though :P 09:42
09:43 donaldh joined
brrt is going to skip mod_n for now 09:51
in real code, it should be rare, because really, who does that
timotimo aye 09:54
it gets replaced by mod_i for almost all cases now
it was "just" an oversight in the nqp optimizer :)
dalek arVM: a7b0a1a | jnthn++ | src/jit/graph.c:
JIT capturelex.
09:58
nwc10 "I" need a faster machine. The goalposts move faster than the build cycle
timotimo heh heh :) 10:02
maybe the build just needs to get even faster :D
brrt uhm 10:07
can we switch contconc for sp_guardconc, decont, sp_guardconc? 10:08
hmm
or wait
if contspec->fetch invokes, then sp_guardcontconc is wrong 10:09
jnthn I'm pondering a variant of the guard which can just index straight into the container type...
brrt so i assume there's a check for contspec->fetch_never_invokes in spesh 10:10
the simpler the better
jnthn Yes, there's a check for that in spesh
So it can never invoke
brrt ah ok
good
then the conversion into 3 ops is overkill
10:17 klaas-janstol joined
dalek arVM: 9573e69 | (Bart Wiegmans)++ | src/jit/ (2 files):
JIT sp_guardcontconc
10:32
jnthn ooh :)
nwc10 sorry for the naive question - why is that one particulary ooh-worthy? 10:39
jnthn Because it's extremely common in spesh'd Perl 6 code 10:51
m: say 4.8 / 5.3
camelia rakudo-moar 88326e: OUTPUTĀ«0.905660ā¤Ā»
jnthn Allows JITting of things that saves 10% off while_hash_set benchmark 10:52
And likely many similar ones
timotimo neato :) 10:53
so, if i understood correctly, dynasm currently lacks support for supplying registers from a variable and thus we have to move all our data from heap to registers and back to the heap and cannot keep data in registers between emitted ops, right? 10:54
jnthn Yes; making dynasm handle that is only part of the story, though. 10:55
timotimo yes, after that we'll need to have a register allocator that shuffles around which register stores what for how long 10:56
what else am i missing?
jnthn That you musn't cheat in ways that break deopt 10:58
timotimo oh 10:59
so where-ever we deopt, it must either look like we never did the register allocation stuff or we have to store everything back the way it would have been
jnthn Yes 11:00
timotimo oh, another unrelated question: that Frame 1, with the ~2000 locals ... we return from that before we go on to run user code, right?
jnthn Well, not *everything*
timotimo as in: that doesn't sit on the stack, making every garbage collection run 2000 local references more expensive etc?
jnthn No, Frame 1 is the outer scope of the running program
In the grand scheme of things, 2000 locals is a drop in the ocean given the amount of things a GC run might consider. 11:01
timotimo hm.
if it's cheap, i suppose it's fine. 11:02
before: 3940src/vm/moar/stage0/ 11:10
after : 3876src/vm/moar/stage0/
not overwhelming, but it's a difference :)
This is MoarVM built with JIT support version 2014.07-375-g8b1c1a0 11:28
does that look good? jnthn?
jnthn I might put "built with JIT support" at the end 11:29
timotimo i had that first, but then i thought "maybe someone would be matching the version by doing words()[*-1]" 11:30
nwc10 if they do that, that's their problem
timotimo OK :)
nwc10 it feels like optimising for the uncommon case
dalek arVM: e97226e | (Timo Paulssen)++ | src/main.c:
let --version advertise jit support
nwc10 m: say my $o = 5.6177e+01; my $n = 5.5998e+01; say $n/$o; say $n/6.597e+01 11:40
camelia rakudo-moar 758974: OUTPUTĀ«56.177ā¤0.996813642593944ā¤0.848840381991815ā¤Ā»
nwc10 oops
m: my $o = 5.6177e+01; my $n = 5.5998e+01; say $n/$o; say $n/6.597e+01 11:41
camelia rakudo-moar 758974: OUTPUTĀ«0.996813642593944ā¤0.848840381991815ā¤Ā»
nwc10 OK, so slightly faster than "last" time and quite a bit faster than about 2.5 weeks ago
timotimo should the exit code for --version be a different one from "successfully ran a user program"? 11:42
nwc10 Perl 5, Python and Ruby all seem to exit 0 11:43
tclsh doesn't understand --version
timotimo OK 11:44
jnthn bbiab 12:06
12:27 brrt joined 13:21 klaas-janstol joined 13:42 brrt joined 13:50 jnap joined
brrt hmm 14:02
i'm still wondering how to refactor param_*_? 14:03
any advice?
jnthn brrt: Passing a pointer to the reg in and returing something that indicates existence could do it 14:15
brrt hmm yeah
jnthn brrt: And you just disregard the return value for the required variatns
brrt do we still need the 'required' field then?
jnthn Since it'll never return but then throw
brrt we could handle the exception in the interpreter
true
but, there are non-interpreter uses of these functions, and these would like to have the object, not a register to put them in 14:17
jnthn Those are confined to bootstrap.c though?
And I suspect we can factor out a helper static function to make it convenient for those 14:18
They are absolutely not hot path at all
brrt hmm yeah i suppose you're right
ok
i'll get to that then
(finally i might add)
jnthn \o/
brrt though adding a fifth argument might make a speed loss on win64 systems 14:21
brrt afk for a bit 14:26
14:26 brrt left 14:39 donaldh_ joined 14:42 ggoebel1111117 joined
[Coke] jnthn: all set for brrt's review on GSOC? 15:18
just want to make sure he has no surprises.
jnthn [Coke]: Yes, will be ready to submit the eval on Mon/Tue from my side :) 15:22
dalek arVM: e953112 | jnthn++ | src/ (4 files):
Support write/close of STDIN for async proc.
15:26
japhb \o/ # async STDIN! 15:27
jnthn Just got it to write to clipboard :) 15:29
my $proc = Proc::Async.new(path => 'c:\windows\system32\clip.exe', :w);
my $proc_done = $proc.start;
await $proc.say('omg stuff from rakudo');
$proc.close_stdin;
await $proc_done;
btyler_ ooooh, cool 15:30
japhb Awesome sauce.
Is there a single place to look at all these examples? 15:31
jnthn No
I've just had a file that I've been scribbling bits in
japhb chuckles
jnthn I should probably turn this into a p6doc entry :)
japhb Yes please. :-)
dalek arVM: 610e8d0 | TimToady++ | src/core/frame.c:
don't pass dynvar metrics we don't use currently
15:35
[Coke] moar still busted in daily runs. 15:52
(moar jit is fine)
nevermind, I'm an idiot. it'll be fine tomorrow. 16:00
16:22 zakharyas joined
jnthn oh noes, who bust the maor build... 16:29
hoelzro I've been seeing more problems with mokudo since last I built it 16:31
FROGGS not me :P
dalek arVM: 7cfcdba | jnthn++ | src/jit/emit.h:
Must mark thing used in main MVM_PUBLIC.
hoelzro git bisect points to 49f19ca
jnthn hoelzro: Hm. That's an odd thing to cause problems; if anything, it's causing less optimization to happen... 16:32
FROGGS hoelzro: what kind of problems?
hoelzro FROGGS: segfaults during tests of a module I've been working on 16:33
FROGGS eww
hoelzro yeah =/ 16:34
timotimo did you try the usual MVM_SPESH_INLINE_DISABLE, MVM_SPESH_DISABLE dance?
FROGGS can you golf it down?
hoelzro I never learned that dance
FROGGS: after work, I can try
FROGGS nice :o)
hoelzro I saw it this morning, and git bisect takes little attention but a lot of time, so I figured I could do that while I work on work stuff =) 16:35
timotimo: what dance is this, btw? 16:39
timotimo setting MVM_SPESH_INLINE_DISABLE=1 and trying it, then setting MVM_SPESH_DISABLE=1
that way you can kind of find out if spesh is likely to blame
hoelzro timotimo: that "fixes" it
(MVM_SPESH_INLINE_DISABLE=1, that is)
timotimo ah
that could be a hint! 16:40
jnthn Can you try s/INLINE/OSR/ instead?
japhb Well, it *is* a hint, it just could be a red herring also. :-) 16:41
hoelzro MVM_SPESH_OSR_DISABLE=1 perl6 t/05-cmd-options.t segfaults
japhb
.oO( Clupeidae, 7000 ƅ )
16:42
jnthn That narrows it down a good bit
hoelzro the repo is at github.com/hoelzro/Subcommander if anyone wants to take a look 16:45
I can try to golf it down after work 16:46
but it's StarCraft night tonight, so I might not get around to it until tomorrow morning =)
dalek arVM: 079d3bd | jnthn++ | src/strings/ops.c:
Add a mechanism for debugging strand issues.
17:08
arVM: 010a964 | jnthn++ | src/strings/ops.c:
Fix bug in string repeat reported by Mouq++.

Fixes the crash in htmlify in p6doc.
FROGGS jnthn: see perlcabal.org/syn/S05.html#Array_aliasing and perlcabal.org/syn/S05.html#Hash_aliasing 17:34
jnthn: now I think it is not LHF anymore... but probably doable
timotimo it used to be an LHF, now it isn't any more? 17:40
jnthn The tree grew... :P 17:44
Yeah, looks a little tricky 17:50
dinner; bbiab
timotimo jnthn: if we are clever about it, we can arrange the numbers from 0 to 64 in a string that's shorter than 10 + 54 * 2 characters! :) 18:01
by using strands and references to substrings and such
[Coke] is that triciest worth it? 18:10
er, *trickiness.
timotimo i don't actually know how much shorter that'd end up being
i also don't remember what that series is called that optimizes this kind of thing 18:11
stackoverflow.com/questions/438935...-between-0 18:12
AKA en.wikipedia.org/wiki/De_Bruijn_sequence
jnthn Thing is, a strand itself needs a little space 18:16
So we almost certainly don't come out ahead 18:17
18:20 klaas-janstol joined
timotimo aaw :( 18:20
18:22 klaas-janstol joined 18:43 tgt joined
tgt Hi. Calling nqp::p6listitems on a type object segfaults on moar. On parrot it says "cannot look up attributes in a type object". (I called ArrayĀ».say accidentally.) 18:49
jnthn m: Array>>.say 18:51
camelia rakudo-moar 0bbeda: OUTPUTĀ«(signal )Ā»
diakopter cool
18:57 Ven joined
jnthn tgt: The SEGVs were easily fixed, but it shouldn't have been trying that anyway. 19:10
(That is, it's wrong on Parrot too)
(And now it just gives an exception on Moar)
timotimo any fruits of the low hanging kind around tonight? 19:11
jnthn timotimo: Maybe some JIT? :) 19:12
Are existspos and assign JITted, for example? 19:13
timotimo i think i've seen brrt commit assign and assignunchecked
i think i built existskey, but not existspos
jnthn OK. existspos is hit by every array access
(in Perl 6)
timotimo seems like i'll have to write MVM_repr_exists_pos first 19:14
19:14 klaas-janstol joined
timotimo well, that was easy :) 19:15
Stage parse : 27.635 - on my laptop with jit turned on ... 19:19
Stage parse : 28.208 - with jit disabled 19:20
^- yay
hoelzro up next: fusion starts to pay off ;)
diakopter how much of that 27.6 is the jitting 19:21
timotimo don't know :\
diakopter is it in a background thread yet?
timotimo no 19:22
we also don't do the free-ing in a background thread yet either
diakopter ah 19:23
timotimo i'll just push my changes and then i'll be AFK for a bit 19:24
dalek arVM: 58902e7 | (Timo Paulssen)++ | src/ (3 files):
existspos existsjit
19:25
19:48 klaas-janstol joined
nwc10 timotimo: PASS (except for the usual sin. Sadly) 20:04
20:18 jnap joined 21:52 zakharyas joined 23:38 colomon joined