|
01:16
pyrimidine joined
02:12
diakopter joined
02:24
pyrimidine joined
02:40
MasterDuke joined
02:48
ilbot3 joined
03:26
pyrimidine joined
03:36
geekosaur joined
|
|||
| samcv | there's a nqp test harness? | 03:49 | |
| japhb | samcv: Yes, pmurias wrote most of it to ensure his nqp-js work was on the right track. | 03:57 | |
| samcv | nice | ||
| japhb | Oh, actually, that would be nqp test *suite*. I haven't actually checked what the NQP 'prove' or equivalent is written in. | ||
| samcv | weird still finds everything perfectly, but i cannot run perl 6 or compile nqp, and there's a hang on the spectest | 04:04 | |
| let me push it to my repo | 04:05 | ||
| github.com/MoarVM/MoarVM/compare/m...g?expand=1 | 04:15 | ||
| diakopter | samcv: do you have a guard that "h_pos + 1" is valid | 04:21 | |
| I mean, I dunno how that could cause a hang | 04:22 | ||
| but stil | |||
| samcv | let me add a print and make sure thatn isn't happening | 04:25 | |
| yeah it seems to be pretty rare, but I think that's the issue | 04:26 | ||
| at least i saw it shortly before the hang | |||
| diakopter crosses fingers | |||
| diakopter fondly remembers writing "brute force for now. horrible, yes. halp." | 04:27 | ||
| samcv | uh nope | 04:28 | |
| fixed it and now not getting any printout there, but it's hanging | 04:29 | ||
| diakopter | well, it's not valid to skip along += ngraphs | ||
| samcv | I changed the while loop to while (h_pos < hgraphs - 1) | ||
| diakopter | change it to increment only 1 | 04:30 | |
| why would it be okay to += ngraphs | |||
| samcv | still hang diakopter | 04:31 | |
| diakopter | oh, because it's ==2, yeah, I suppose | ||
| samcv | yep | ||
| MasterDuke | samcv: did you check out my boyer-moore branch at all? | ||
| yoleaux2 | 23 Jan 2017 10:31Z <lizmat> MasterDuke: seems like a logical continuation of the other Nd work you've done :-) | ||
| samcv | i tad | 04:32 | |
| MasterDuke | it worked fine for me (no problems), but it wasn't faster | ||
| and i don't know why | |||
| diakopter: if you wrote that original code maybe you could take a look at what i tried? | 04:33 | ||
| github.com/MasterDuke17/MoarVM/tre..._for_index | |||
| samcv | MasterDuke, can you link me it again? | ||
| i'll look a little closer | |||
| diakopter | samcv: could you confirm that it's looping in your while loop? | ||
| MasterDuke: is yours working? | |||
| samcv | yeah gonna add some prints | 04:34 | |
| diakopter | samcv: (or is it looping as the result of some bad result of that function) | ||
| MasterDuke | if i remember correctly, it works in that it gives the same results as the original code, it just isn't any faster | ||
| sure there's some overhead from building the tables, but i would have expected to see some difference at some combination of needle/haystack size | 04:35 | ||
| diakopter | well, how many times is that MVM_string_index called | ||
| samcv | yeah it seems to be stuck | 04:37 | |
| loopy h_pos 1 hgraphs 10 | |||
| loopy h_pos 3 hgraphs 10 | |||
| both those lines just printed on loop | |||
| MasterDuke | diakopter: was that question to me? | ||
| samcv | so it's looping twice and then.. starting over? or someplace is calling it again and a again? | 04:38 | |
| should add in a print for when it exits the loop | |||
| diakopter | MasterDuke: sure :) | ||
| anyone | |||
| MasterDuke | diakopter: just once per nqp::index call right? but i think i tried doing many in a loop and the total time was no faster | 04:39 | |
| diakopter | just curious for the motive of optimization (or, how much one could theoretically speed it up) | ||
| MasterDuke | but i believe also used for literal regexes | ||
| e.g., /foobar/ | |||
| samcv | no, it's exiting the loop | ||
| diakopter | well I meant in a long-running program such as p6 setting compilation, how many times is it called | ||
| samcv | a huge no | ||
| diakopter | samcv: ok, so it's returning a wrong result | 04:40 | |
| MasterDuke | i've profiled the compile of rakudo, but moarvm ops don't show up in a profile at that level | ||
| diakopter | yeah you'd have to use something fancy :D | ||
| MasterDuke | i thought i once perf recorded a rakudo compile, but i'm not sure if i gisted the results | 04:41 | |
| samcv | ok yea'h it is | ||
| 10 in the haystack it fails somehow. will fix that | |||
| curious what part of the code just uh. rechecking forever | |||
| if it can't find something | |||
| diakopter | samcv: yes I'm curious about that too | 04:42 | |
| MasterDuke | diakopter: gist.github.com/MasterDuke17/4b9dc...ac0b2556cd | 04:44 | |
| also running a new one now | 04:46 | ||
| diakopter | 0.16% 0.07% moar libmoar.so [.] MVM_string_index | 04:47 | |
| so the max you could speed up that run, by optimizing that function infinitely, is only that fraction | 04:48 | ||
| thereabouts | |||
| samcv | yeah that's what i thought, i can't change the while loop to while (h_pos < hgraphs - 1) | 04:49 | |
| MasterDuke | of the rakudo compile yeah, but other workloads should be helped more | ||
| samcv | gonna set it back then run prove and check the logs see which it hangs | ||
| SUCC 1 h_pos -2134653648 hgraphs -2122111808 | |||
| XD | |||
| succ means success | 04:50 | ||
| diakopter | heh. | ||
| samcv | well. at least it passed one of the checks. i numbered them | ||
| diakopter | that's a very long string | ||
| do you have that much negative memory? | |||
| samcv | well it's alternating uhm | 04:51 | |
| between two things, one where it succeeds and one which fails | |||
| alternating | |||
| the failing one is the odd numbers | |||
| maybe it's just a print error idfk | 04:52 | ||
| or maybe it's the same one and only failing in part of the print's | |||
| oh i forgot to put anything after the fprintf (variables) | 04:53 | ||
| wtf it looks like the values get corrupted? | 04:55 | ||
| loopy h_pos 1 hgraphs 10 | 04:56 | ||
| loopy h_pos 3 hgraphs 10 | |||
| SUCC 1 h_pos 530666800 hgraphs 543208640 | |||
| exiting loop succ 1.1 h_pos 3 hgraphs 10 | |||
| fprintf(stderr, "SUCC 1 h_pos %i hgraphs %i\n", h_pos, hgraphs); # corruption | |||
| then below itc | |||
| fprintf(stderr, "exiting loop succ 1.1 h_pos %i hgraphs %i\n", h_pos, hgraphs) | |||
| and prints the correct values | |||
|
04:57
MasterDuke joined
|
|||
| diakopter | MasterDuke: true, so then profile those other workloads.. :) | 04:57 | |
| samcv | time to try making them all | ||
| %li | |||
| diakopter | lol at "idfk" | 04:58 | |
| MasterDuke | for the heck of it i'll perf record a spectest run, see what that looks like | ||
| diakopter | well that'll be a TON of invocations | 04:59 | |
| process executions | |||
| MasterDuke | if anyone is interested, here's a perf report of building rakudo with target=parse. gist.github.com/MasterDuke17/aff44...6d1d0ba537 | 05:02 | |
| samcv | ok diakopter it does fine on all the things i've tested it with | 05:24 | |
| but it's still hanging | |||
| diakopter | samcv: push the changes? | 05:26 | |
| samcv | diakopter, pushed | 05:32 | |
| diakopter | "h_pos + 1 < hgraphs - 1" | 05:34 | |
| I think you meant <= | |||
| samcv | that's what it says? | 05:36 | |
| line 245? or elsewhere? | |||
| diakopter | yes, 245, I think you meant to write <= instead of < | ||
| samcv | yeah that seems so then | 05:37 | |
| diakopter | I think the check needs to be "h_pos + 1 <= hgraphs - 1" or "h_pos + 1 < hgraphs" | ||
| I still can't conceive of why that would make something hang though XD | 05:38 | ||
| samcv | yeah | ||
| in the test it ust goes over the same string segment again and again | |||
| some 10 long string | 05:39 | ||
| i tested all positions of abcdefg.. for hgraphs 10 | |||
| but yeah shouldn't hang | |||
| should give me some message like, confused at ... | |||
| diakopter | so did that fix it | 05:42 | |
| samcv | i really doubt it | 05:43 | |
| MasterDuke | fyi, just doing an nqp::index() in a loop gives ~40% time in MVM_string_substrings_equal_nocheck and ~10% time in MVM_string_index | ||
| samcv | yeah no | ||
| hangggg | 05:44 | ||
| MasterDuke | which isn't all that surprising | ||
| samcv | it tests the same string again and again | ||
| MasterDuke | anyway, i'm off to sleep, later all... | 05:45 | |
| samcv | kk | ||
| diakopter | try removing the return -1 line | 05:47 | |
| to let it fall back to the other thing | |||
| sleep& | 05:48 | ||
| samcv | k night | ||
| i guess i could attempt to print out the needle and the haystack as their unicode cp's... | 05:56 | ||
| unless there's an easy way to dump a string? | |||
|
06:31
pyrimidi_ joined
07:13
domidumont joined
07:20
domidumont joined
08:23
zakharyas joined
|
|||
| timotimo | the easiest thing is to just encode it to utf8, print that, and free the string again | 09:45 | |
|
09:52
brrt joined
10:04
domidumont joined
10:43
brrt joined
13:02
pyrimidine joined
13:08
pyrimidine joined
13:39
pyrimidine joined
14:06
pyrimidine joined
14:22
ggoebel joined
14:57
pyrimidine joined
15:14
pyrimidine joined
15:32
dalek joined
15:34
synopsebot6 joined
15:52
brrt joined
|
|||
| brrt | ohai #moarvm | 15:54 | |
| timotimo | greetings brrt | 15:55 | |
| brrt | \o timotimo | ||
| how are things | |||
| timotimo | they're okay | 15:56 | |
| yesterday i tried some simple stretches and yoga poses some random artist on twitter recommended if you regularly suffer from back pain | |||
| i don't really have back pain often, but i thought i'd give it a go anyway | |||
| now i have muscle soreness all over my back and shoulders %) | |||
| i'm looking forward to getting a little involved with the "easier" parts of the jit soon-ish :3 | 15:57 | ||
| i'd like to hear how you are today, too. i'm going to be AFK for ~half an hour first, though | |||
| brrt | ehm, i'm kind of busy, as usual | 15:58 | |
| unfortunately, i might add :-P | |||
| i figured out that i need to add a 'barrier stack | 15:59 | ||
| or rather | |||
| barrier queue to the JIT | |||
| jnthn has completed his very busy part of the week and looks forward to digging into Moar/Perl 6 stuff again tomorrow. :) | |||
| brokenchicken | \o/ | ||
| brrt | i.e. a list of all those instructions that cause a flush of (a subset of) registers | ||
| brrt envies jnthn | |||
|
16:08
ggoebel joined
16:27
brrt joined
|
|||
| brrt | so, know how i've been talking about solving the 3-operand to two-operand conversion process | 16:36 | |
| that also needs to be done for the indirect ops | 16:37 | ||
| to give you an example: suppose I have something intended as: | |||
| rcx = rdx + [rcx + 5]; | |||
| well, i can't very well overwrite rcx with rdx if i expect that to work | 16:38 | ||
| timotimo | good point | 16:39 | |
| i hadn't considered indirect addressing :S | |||
| brrt | utlimately, the limitation is that linear scan operates on live ranges, not on tiles, and so it can't enforce per-tile constraints very well | 16:40 | |
| timotimo | let's add another pass! :) | 16:41 | |
| brrt | hmmm | ||
| yes, but | |||
| where | 16:42 | ||
| before, or after linear scan | |||
| timotimo | .o( why not both? ) | ||
| wasn't actually a serious suggestion | |||
| brrt | i know :-) | ||
| the 'lets' add another pass' probably has some truth to it, but i'm not sure how | |||
| so, to recap | 16:44 | ||
| this is only relevant to binary ops | |||
| this is only relevant when the output register would overwrite the *second* input register | 16:45 | ||
| or actually, 'a secondary', because there may be more than one | 16:46 | ||
|
17:23
domidumont joined
18:20
domidumont joined
18:38
domidumont joined
18:50
FROGGS joined
19:38
domidumont joined
20:25
zakharyas joined
20:26
pyrimidine joined
21:28
pyrimidine joined
|
|||
| MasterDuke | is there a fast way to know/find out in moar if a string is all ascii chars? | 23:12 | |
| timotimo | only whatever i do in ops.c or the encoding .c files i think? | 23:15 | |
| MasterDuke | ops.c is ~10k lines, what should i search for? | 23:18 | |