github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
01:04
mgoebel left
|
|||
ugexe | is there something about _n ops that is/was more difficult to jit? specifically: eq_n, gt_n, lt_n, ge_n | 03:26 | |
asking because it would seem logical to implement the alongside their _i counterpart if it was that simple | 03:28 | ||
MasterDuke | ugexe: they're waiting on brrt's in-progress floating point support for the jit | 03:31 | |
ugexe | ah. are there any other general things that cannot be jitted? attr related things like get/bindattr_* for instance? | 03:34 | |
MasterDuke | i think a bunch of the param_* and *lex* ops are hard (maybe impossible, but i couldn't confirm that) | 03:36 | |
and *ctx* ops | |||
looks like get/bindattr_* are jitted, but don't have templates, don't know why | 03:38 | ||
ugexe | what does it mean to be jitted but not have a template? my naive thinking would believe a template is a prereq to being jitted | 03:39 | |
MasterDuke | other way around | 03:40 | |
there's still the legacy "lego" jit and the template/expression jit | 03:41 | ||
and right now something has to be jitted in the lego jit before templates can be used | 03:42 | ||
i *think* brrt has plans to eventually combine them (or maybe get rid of the lego jit), but i don't know any details | 03:43 | ||
ugexe | what file is the lego jit? / how do you know whats lego jitted already | 03:45 | |
MasterDuke | src/jit/graph.c | ||
if the spesh log mentions 'bailed completely' because of an op that usually means it's not jitted at all. when it sys 'expr bail: cannot get template' for an op that usually means it's lego jitted, but is missing the template | 03:48 | ||
ugexe | github.com/MoarVM/MoarVM/blob/5161...#L229-L230 | 04:04 | |
i wonder if i dont need that for github.com/MoarVM/MoarVM/pull/1074/files | 04:05 | ||
because return_i works if its not there, and that comment would make sense then | 04:06 | ||
make sense to me rather | |||
return_s worked with and without it | 04:07 | ||
04:33
AlexDani` joined
04:37
AlexDaniel left
|
|||
Geth | MoarVM: ugexe++ created pull request #1075: Add clone exprjit template |
05:53 | |
MoarVM: 5a6b9ea30e | (Nick Logan)++ (committed using GitHub Web editor) | src/jit/core_templates.expr Add clone exprjit template |
08:28 | ||
MoarVM: 138623b77e | niner++ (committed using GitHub Web editor) | src/jit/core_templates.expr Merge pull request #1075 from ugexe/patch-10 Add clone exprjit template |
|||
09:04
patrickb joined
10:24
nine_ is now known as nine
11:29
AlexDani` is now known as AlexDaniel,
AlexDaniel left,
AlexDaniel joined
14:05
lucasb joined
|
|||
dogbert17 | m: say 'ping' | 16:34 | |
camelia | ping | ||
dogbert17 | hmm, there seems to be a new bug lurking | 16:40 | |
it looks like this - gist.github.com/dogbert17/0aec4dfb...5bc7c1908b | 16:42 | ||
could be a false positive ... | 16:59 | ||
18:47
MasterDuke left
18:52
MasterDuke joined,
MasterDuke left,
MasterDuke joined
|
|||
Geth | MoarVM: ugexe++ created pull request #1076: Add replace exprjit template |
19:29 | |
MoarVM: ugexe++ created pull request #1077: Add resume exprjit template |
19:39 | ||
MoarVM: ugexe++ created pull request #1078: Add indexingoptimized exprjit template |
19:56 | ||
MoarVM: ugexe++ created pull request #1079: Add typeparameterized exprjit template |
20:05 | ||
MoarVM: ugexe++ created pull request #1080: Add typeparameterat exprjit template |
20:10 | ||
ugexe | I think thats all the easy jit expr templates that were bailing for `zef search HTTP` | 20:12 | |
these are the remaining ones that look like they are not so easy: | 20:13 | ||
assign, bindlex, captureexistsnamed, capturenamedshash, captureposarg, captureposarg_i, captureposelems, captureposprimspec, coerce_In, coerce_in, coerce_ni, coerce_ns, continuationinvoke, ctxcallerskipthunks, ctxlexpad, eq_n, expr, ge_n, getattrref_i, getcodename, getlexref_i, getlexref_n, getlexref_s, getlexreldyn, getwhere, gt_n, indexat, indexnat, invokewithcapture, jumplist, lexprimspec, lt_n, | |||
p6capturelex, p6capturelexwhere, prepargs, queuepoll, rethrow, return, scwbdisable, sp_bind_n, sp_bind_s_nowb, sp_bool_I, sp_fastbox_bi_ic, sp_fastbox_i_ic, sp_get_s, sp_getlex_ins, sp_getlex_no, sp_getlex_o, sp_getlexvia_o, sp_guard, sp_guardconc, sp_guardjustconc, sp_guardjusttype, sp_guardobj, sp_guardsf, sp_guardtype, sp_p6oget_bi, sp_p6ogetvc_o, takehandlerresult, throwdyn, throwpayloadlex, unless_s, | |||
wval_wide | |||
how is "capturenamedshash" supposed to read? capture named shash? capture named s hash? | 20:15 | ||
and by easy i mean the ones that can just be mapped to a function | 20:19 | ||
could unless_s be implemented using MVM_string_compare($0, "") ? | 20:34 | ||
or maybe checking the length | 20:35 | ||
21:16
MasterDuke left
|
|||
Geth | MoarVM: ugexe++ created pull request #1081: Add objectid exprjit template |
21:20 | |
21:47
patrickb left
23:01
Kaiepi joined
|
|||
ugexe | decodeconf r57(2), r44(1), r57(1), r54(2) # JIT: bailed completely because of <decodeconf> <-- what does it mean that it bailed because of itself? | 23:29 | |
jnthn | ugexe: capture nameds hash - a hash of all the named arguments in the capture | ||
ugexe | ah, the only one i didnt think it was | ||
jnthn | "bailed completely" means it's not even covered in the lego JIT | 23:30 | |
23:32
MasterDuke joined
23:33
MasterDuke left,
MasterDuke joined
|
|||
MasterDuke | jnthn: all the profiles i've made in the past couple days have shown ~0% jit and everything is split between spesh and interpreted. i assume they are actually getting jitted, but i don't know where the problem is | 23:34 | |
or when exactly it started | 23:36 | ||
jnthn | MasterDuke: I saw something like that recently also, but had no time to figure out what was going on | 23:40 | |
If it was an actual JIT breakage I suspect we'd have seen a lot of benchmarks tank, though, and I didn't see any such reports, so I suspect it's a profiler issue somewhere | 23:41 | ||
MasterDuke | ok, glad (maybe?) it wasn't just me | ||
btw, i think i've also seeing tons of identity() near the top of profiles recently, in gen/moar/BOOTSTRAP.nqp. is that because of some optimization of other stuff that it now bubbled up to the top? | 23:44 | ||
jnthn | It's a measure of profiler overhead as much as anything | 23:46 | |
MasterDuke | is there a way to optionally exclude spesh itself from profiles? does that make sense? | ||
jnthn | No, I'm not sure what you mean. spesh runs on its own thread, so the meausre is how much of the program is was active for | 23:47 | |
*it was | |||
identity is effectively `sub identity($a) { $a }` in NQP | |||
A bunch of spesh plugins that determine no work is requied will resolve into it; it will then be inlined, and tend to optimzie into a single `set` instruction | 23:48 | ||
MasterDuke | i guess i'm sometimes unsure if something is from spesh (and there's probably nothing i can do about it), or from core and/or user code which i could possible do something about | ||
jnthn | Well, it's really just a normal sub | 23:49 | |
MasterDuke | but i might not be very clear in my explanation (or correct in how i'm interpreting some of the stuff i see in profiles) | ||
jnthn | Just "called" very often | ||
The reason it shows up heavily in profiles is, unfortunatley, measurement error | 23:50 | ||
In the worst case I think it JITs into two machine code instructions | |||
MasterDuke | ah | ||
jnthn | So the enter and exit profiler instructions are what is actually getting measured | 23:51 | |
MasterDuke | well, i gotta afk for a while, but thanks for the info | ||
jnthn | We might be able to somehow figure out that overhead and offset it somehow | ||
MasterDuke | hm, anyway to subtract those from costs? | 23:52 | |
jinx | |||
jnthn | In theory if we run (in C) a loop of profiler enter followed by profiler exit, and divide by the number of times we ran it, then we get a number that we could consider "the overhead" | ||
We could perhaps do it at the start of profiling as a kind of "callibration" | 23:53 | ||
And then provide that value with the data, so profiling frontends can subtract it | |||
timotimo: You might find ^^ an interesting idea | |||
timotimo | interesting, yeah | 23:55 | |
jnthn | I guess the answer to "has this bubbled up" is also yes: we used to do everything so slowly that the profiler noise didn't matter :P | 23:59 | |
.oO( Whenever we make something faster, all anybody notices is what's slow :P ) |