|
00:15
pyrimidine joined
01:13
pyrimidine joined
01:26
agentzh joined
01:46
geekosaur joined
02:11
agentzh joined
02:39
pyrimidine joined
02:48
ilbot3 joined
03:31
agentzh joined
03:56
pyrimidine joined
04:29
agentzh joined
04:51
geekosaur joined
04:53
njmurphy joined
05:00
agentzh joined
05:23
agentzh joined
06:12
stmuk_ joined
06:14
japhb joined,
sivoais joined
06:35
domidumont joined
06:42
domidumont joined
07:03
brrt joined
07:26
KDr2 joined
07:49
domidumont joined
08:12
brrt joined
08:21
zakharyas joined
09:39
pyrimidi_ joined
09:57
agentzh joined
|
|||
| samcv | any clue how we handle binding the same hash object to multiple keys of another hash object? | 10:41 | |
| we don't replicate the hash do we? | |||
| jnthn | It's binding, so they all point to the same thing | 10:42 | |
| samcv | hmm | ||
| jnthn | It's assignment that copies | ||
| samcv | so nqp::bindkey shouldn't do any copying | 10:43 | |
| but %hash{$var} = %hash; might copy the hash? | |||
| jnthn | It may depending on what's at %hash{$var} | ||
| samcv | nothing is there yet | ||
| i need to bind a single hash to the keys of 65,000 keys of a different hash. quickly | 10:44 | ||
| jnthn | Then you'll just assign into a Scalar, so it'll point to the existing %hash | ||
| samcv | it's taking so long | ||
| like 9 minutes | 10:45 | ||
| jnthn | m: my @keys = ^65000 .map(*.Str); my %h2 = a => 1; my %h; %h{@keys} = %h2 xx *; say now - INIT now | ||
| camelia | rakudo-moar 18e6f0: OUTPUT«0.74697460» | ||
| samcv | hmm i made some changes and now it's much faster | 10:46 | |
| made it go through one less sub | |||
| jnthn | hmm | ||
| samcv | maybe that was causing the slowness | ||
| jnthn | Maybe...anything special about the sub? | 10:47 | |
| samcv | jnthn, is %h{@keys} faster than doing nqp::bindkey ? | ||
| not really | |||
| jnthn | No, though it's likely a good bit faster than writing for @keys { %h{$_} = %h2 } | ||
| samcv | the sub just does `for Range.new($first-cp, $second-cp) { apply-hash-to-cp($_, %hash)} | ||
| and just did that same code instead in the slow sub and it seems to have made it much faster | 10:48 | ||
| and by much faster i mean taking 17.731817 seconds instead of like 20 minutes | |||
| jnthn | o.O | ||
| Got it somewhere I can look at? | 10:49 | ||
| I'm busy with $other-work at the moment, but would be curious to look into why that makes such a huge difference. | |||
| samcv | github.com/samcv/UCD/blob/master/U...en.p6#L479 | ||
| moved this code into the routine i linked in my last irc message github.com/samcv/UCD/blob/master/U...#L537-L539 | 10:50 | ||
| \o/ though. now i can get the whole UCD on perl 6 | |||
| witnhout taknig hours | 10:51 | ||
| after doing loads of other improvements to the speed, making the other parts of the function over 10x faster as well by nqping it | |||
| O.o i'm using 21% of my memory atm :P | |||
| 16GB | |||
| looks like in the code that turns all the unicode names at once into base 40 | 10:52 | ||
|
13:10
lizmat_ joined
13:34
ggoebel joined
13:56
ggoebel joined
13:59
agentzh joined
14:00
lucasb joined
|
|||
| lucasb | o/ | 14:01 | |
| brokenchicken | \o | 14:02 | |
| lucasb | I noticed this struct named MVMNGFTrieNodeEntry in src/strings/nfg.{c,h} | ||
| brrt | good hi, lucasb, brokenchicken, * | ||
| lucasb | I guess the intention was to have named it with "NFG" instead of "NGF" | ||
| brrt | heh, that looks well possible | ||
| lucasb | so, just s/NGF/NFG/g :) | 14:03 | |
| brrt | PR pls :-P | ||
|
14:03
KDr2 joined
|
|||
| brrt | (not that I don't agree that this is a really easy change, it's just that I'm trying to distribute the workload as broad as possible, if only for the secondary effect that more people will have seen/be confident in editinng MoarVM source code) | 14:04 | |
| lucasb | ok, I can change it later today and submit a PR :) | ||
| brrt | i eagerly await it :-) | 14:05 | |
| jnthn | Heh, nice catch | 14:18 | |
| brrt | speaking of PRs, have you had the chance to look at the JIT-data-section bit? | 14:21 | |
| jnthn | Not yet; been tied up in some $other-task all yesterday/today | 14:45 | |
| Which I just got done with :) | |||
| Geth | MoarVM: lucasbuchala++ created pull request #517: Correct typo in struct name (s/NGF/NFG/) |
14:57 | |
|
16:07
brrt joined
16:10
pyrimidine joined
16:26
agentzh joined
|
|||
| brrt | lucasb++ looks good to me, will merge | 16:30 | |
| Geth | MoarVM: 625f70fdc4 | (Lucas Buchala)++ | 3 files Correct typo in struct name |
16:31 | |
| MoarVM: 66961d88a8 | (Bart Wiegmans)++ | 3 files Merge pull request #517 from lucasbuchala/nfg-typo Correct typo in struct name (s/NGF/NFG/) |
|||
|
16:58
pyrimidine joined
17:13
FROGGS joined
17:39
domidumont joined
17:40
domidumont joined
18:03
domidumont joined
18:46
agentzh joined
|
|||
| brokenchicken | nqp ops like div_i are in src/core/interp.c ? | 19:05 | |
| jnthn | Their interpretation is | 19:06 | |
| Such an op will also be JIT-compiled | |||
| brokenchicken | Does MVM_JIT_DISABLE=1 disable that? | 19:07 | |
| Like there's a bug but I see nothing wrong in src/core/interp.c Where else should I look? | |||
| Oh, I see some stuff in src/jit/emit_x64.dasc | 19:10 | ||
|
19:10
pyrimidine joined
|
|||
| timotimo | yeah, jit disabling disables just that | 19:10 | |
| brokenchicken | oh, so if the bug is still present then it's not in emit_x64.dasc? hmmmm | 19:11 | |
| timotimo | also try disabling spesh, just to be sure | 19:12 | |
| brokenchicken | bug still there | 19:13 | |
| jnthn | Note if you're dealing in big ints, not hative ints, then it's div_I | 19:18 | |
| uh, native | |||
| timotimo | i assume it also happens with a high-level operator? | 19:19 | |
| brokenchicken | jnthn: well, isbig_I tells me is it big, but it's only like 50 bits. And JVM gives correct result. | ||
| jnthn | Oh, if it's a boxed object you're working on it'll use div_I though | 19:20 | |
| brokenchicken | no, I can repro in just nqp | ||
| jnthn | Ah | ||
| Example? | |||
| brokenchicken | Not yet :) I wanna try to solve on my own :) | 19:21 | |
| [Coke] chuckles at hative ints. | |||
| nwc10 | "like 50 bits"? Like 53? | 19:22 | |
| brokenchicken | nwc10: 51.15 | 19:23 | |
| nwc10 | oh :-( | ||
| brokenchicken | nwc10: why? What happens with 53? | ||
| nwc10 | size of mantissa on a 64 bit double | ||
| timotimo | hm. | 19:24 | |
| i think the is_big logic isn't right | |||
| it looks at the bigint's "used" stat, and sees if it's bigger than one | |||
| but libtommath can be configured to have one of many different kinds of storage formats | 19:25 | ||
| what buffoon wrote that code? oh, it was me! okay! | |||
| brokenchicken | oh ok. `int` is 32 bits and that's where the problem comes from | 19:37 | |
| how can I make it use 64-bits on 64-bit boxes? | 19:38 | ||
| And well, I guess I don't know what I'm doing :) .. It's rt.perl.org/Ticket/Display.html?id...et-history | 19:39 | ||
| And the problem boils down to: | |||
| m: use nqp; say(nqp::div_i(10000000000000000, 4)) | |||
| camelia | rakudo-moar f2894d: OUTPUT«468729856» | ||
| brokenchicken | j: use nqp; say(nqp::div_i(10000000000000000, 4)) | ||
| camelia | rakudo-jvm fb4f16: OUTPUT«2500000000000000» | ||
| brokenchicken | And on moarvm div_i stores those values in a `int` that's 32bit so it overflows and has wrong value | ||
| timotimo | MVMint64 or MVMuint64 | 19:40 | |
| huh, why does it do that? that's very wrong :) | |||
| brokenchicken | Oh cool! Then I can even fix this :D | 19:41 | |
| brokenchicken tries | |||
| timotimo | what buffoon wrote that code? oh. it was me... okay ... | ||
| brokenchicken | :) | ||
| geekosaur | heh | ||
| timotimo | well, that was in there since 2014-01-11 | 19:42 | |
| and nobody complained | |||
| brokenchicken | heh | ||
| timotimo | so ... am i off the hook? maybe? :S | ||
| brokenchicken | github.com/MoarVM/MoarVM/pull/518 | 19:52 | |
| moritz | timotimo: your current self is off the hook, while we viciously blame your past self :-) | ||
| brokenchicken | Fixes the bug and passes rakudo's stresstest | ||
| timotimo | :) | ||
| brokenchicken: can you try what happens if you run that in a big loop and have it jitted? | 19:53 | ||
| i.e. does the jit use the proper register size? i.e. 64bit for each part of the result? | |||
| brokenchicken | cpan@perlbuild2~/CPANPRC/rakudo (nom)$ ./perl6 -e 'use nqp; my $x; for ^1000000 { $x = nqp::div_i(10000000000000000, 4) }; say $x' | 19:55 | |
| 2500000000000000 | |||
| Like that? | |||
| Geth | MoarVM: zoffixznet++ created pull request #518: Fix overflow in div_i op |
19:58 | |
| brokenchicken | this also gives the right result at the end: use nqp; my $x; for ^100000000 { $x = nqp::div_i(10000000000000000, 4) }; say $x | 19:59 | |
|
21:10
agentzh joined
21:13
pyrimidine joined
21:23
zakharyas joined
|
|||
| samcv | brokenchicken++ | 21:32 | |
| jnthn | Travis didn't even *start* any of the builds. | 21:34 | |
|
21:37
domidumont joined
|
|||
| brokenchicken | samcv: ? | 21:59 | |
| samcv | hmm? | ||
|
22:02
geekosaur joined
|
|||
| samcv | brokenchicken, ? | 22:08 | |
| brokenchicken | 1632 samcv │ brokenchicken++ | 22:09 | |
| samcv | oh | 22:10 | |
| the PR | |||
| <brokenchicken> this also gives the right result at the end: use nqp; my $x; for ^100000000 { $x = nqp::div_i(10000000000000000, 4) }; say $x | |||
|
22:14
MasterDuke joined
22:21
pyrimidine joined
22:49
pyrimidine joined
23:21
pyrimidine joined
|
|||