🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | log inspection situation still under development | For MoarVM see #moarvm
Set by lizmat on 22 May 2021.
00:02 reportable6 left 02:15 [Coke] left 02:34 [Coke] joined 02:44 frost joined 02:47 releasable6 left, nativecallable6 left, nativecallable6 joined, releasable6 joined, statisfiable6 left 02:48 statisfiable6 joined 03:04 reportable6 joined 03:49 andinus joined
andinus release manager, do they have to use their own hardware for running tests? 03:49
Xliff Oh. On the testing note. I have a 5950x AMD system that I can see about opening up for testing. 16 core, 32 thread 3.3Ghz 03:57
I have the hardware for a second. 03:58
And possibly before the 1st of the year, I would like to obtain a Xeon 8362 based system, so if someone has recommendations on a place that can build something like that, please drop me a PM, 04:01
andinus i can make time for it but don't have required hardware (Blin ~32GB memory)
Xliff And yes, I would be amendable to opening that system up for testing, as well.
I think current Rakudo has a 32 thread max limit on parallelization. I do remember trying something with VMs and a stoopidly large amount of cores a while back and it fell flat on its face. 04:03
japhb Xliff: I don't think it's _limited_ so much as not tuned enough to scale all the way up linearly. There is a *default* limit on general threads in the default scheduler, but that can be easily changed with e.g. the RAKUDO_MAX_THREADS environment variable. 04:20
Xliff japhb: Ah. I didn't know about that .What's the default value on that? 04:42
04:49 evalable6 left, linkable6 left
japhb 64, last I checked. It should be in docs/running.pod 04:51
04:52 evalable6 joined
japhb But there are (or were) some known scaling issues, only some of which have been addressed. For example, for a while certain usage patterns would cause the thread spawning heuristic think it didn't need any more threads and waste some cores. I think that one was addressed. 04:55
Similarly, lizmat found a pattern this week that slowly drops in CPU utilization over time, and I don't think that one's been nailed down yet. 04:56
Then of course there's the effect of Amdahl's law anywhere real serialization still occurs. 04:59
(thread serialization, not data serialization, I mean)
Xliff japhb: OK. Another data point for that. I tried running my parallel precompilation with some of my projects (had 96 core VM) and compilation hung unless I limited the number of parallel threads to 32. 05:01
japhb Xliff: That's interesting. What version of Rakudo was that? 05:05
05:52 evalable6 left 05:53 evalable6 joined 06:02 reportable6 left 06:03 reportable6 joined
Geth nqp: usev6++ created pull request #748:
[JVM] Fix conversion to unsigned int
06:43
08:04 Xliff_ joined 08:06 MasterDuke left, Xliff left
Xliff_ japhb: I generally keep my Raku compilers current, so Definitely around 2021.09 08:26
08:55 patrickb joined
patrickb andinus: WRT Release manager requirements: Hardware for running tests will not be a limiting factor. There are multiple systems provided by others available for running tests / blin. 09:04
Geth nqp: 81fe4113a4 | (Christian Bartolomäus)++ | 2 files
[JVM] Fix conversion to unsigned int

  ... in VMArray with 32 bit. The old code handled the 1 as a signed
integer, so that (1 << 32) just evaluated to 1.
An alternative would have been to use Integer.toUnsignedLong(i), which is available since Java 8. We could change to those methods in the future -- but for consistency the should be used for the other types of VMArrays as well.
09:18
lizmat japhb: I haven't been able to golf it yet, and it may still be an artefact of my own algorithm 09:27
Xliff_ lizmat: See my messages, above. 09:44
lizmat noted. I just realized that the default for maximum number of threads should probably be dependent on the number of cores available 09:49
09:49 linkable6 joined
Geth rakudo/max-threads-default: 04cd0754f8 | (Elizabeth Mattijsen)++ | src/core.c/ThreadPoolScheduler.pm6
Make the max number of threads depend on number of cores

Previously, this was set to 64. Clearly, should be dependent on actual number of cores available. For now, the maximum is set to 8 times the number of cores, based on the previous value an the more common 4-8 core hardware that was available when that maximum was originally set.
10:01
rakudo: lizmat++ created pull request #4652:
Make the max number of threads depend on number of cores
rakudo: 259d29b36d | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/core.c/IterationBuffer.pm6
Add IterationBuffer.unshift/prepend methods (#4641)

Seems like a logical addition without interfering with the performance of the other IterationBuffer logic. And I have a use-case for it :-)
10:16
10:16 linkable6 left 10:19 linkable6 joined 10:34 janhen joined 11:34 evalable6 left, linkable6 left 11:35 linkable6 joined 12:02 reportable6 left 12:03 reportable6 joined 12:06 kjp left 13:06 statisfiable6 left, quotable6 left, linkable6 left, benchable6 left, reportable6 left, bloatable6 left, bisectable6 left, greppable6 left, tellable6 left, squashable6 left, notable6 left, shareable6 left, unicodable6 left, committable6 left, releasable6 left, nativecallable6 left, coverable6 left, sourceable6 left, committable6 joined, coverable6 joined, bloatable6 joined 13:07 bisectable6 joined 13:08 releasable6 joined, quotable6 joined, tellable6 joined 13:09 shareable6 joined 13:37 evalable6 joined 14:07 notable6 joined, benchable6 joined, reportable6 joined 14:08 squashable6 joined 14:09 statisfiable6 joined 14:18 vrurg joined 14:20 vrurg_ left 14:30 vrurg_ joined 14:33 vrurg_ left, vrurg_ joined, vrurg left 14:43 frost left 14:53 janhen left 15:07 greppable6 joined 15:08 linkable6 joined 15:09 sourceable6 joined
japhb Xliff_: It might be worth checking that parallel precomp threading case with HEAD rakudo, because new-disp and a ton of reliability bugfixes have landed since 2021.09. 15:40
Xliff_ japhb: Heh. Next time I have access to something with more than 32 cores, I will. ;) 15:47
16:08 nativecallable6 joined 16:20 Xliff_ left, patrickb left 17:07 unicodable6 joined, [Coke]_ joined, lizmat_ joined 17:09 leont_ joined 17:10 gfldex_ joined 17:16 [Coke] left, lizmat left, zostay left, gfldex left, leont left, camelia left, leont_ is now known as leont 17:22 zostay joined, camelia joined 17:32 lizmat_ left 17:33 lizmat joined 18:02 reportable6 left 18:06 [Coke]_ left 18:13 Colt joined 18:25 TempIRCLogger left, TempIRCLogger joined 18:26 [Coke] joined 18:56 Colt left 18:57 Colt joined 18:58 Xliff joined 19:01 Colt left 19:02 Colt joined, gfldex_ is now known as gfldex
gfldex m: my @a = 1,2 … Inf; say @a.first(* > 1, :end); @a.tail; 19:03
camelia Nil
Cannot tail a lazy list
in block <unit> at <tmp> line 1
19:03 Colt left, Colt1 joined, Colt1 left
gfldex is there a reason why first(:end) silently fails but tails refuses to work with lazy lists? 19:03
19:05 reportable6 joined 19:06 Colt joined 20:00 dogbert17 left 20:03 dogbert17 joined 20:09 dogbert11 joined, dogbert17 left 20:22 vrurg_ is now known as vrurg 20:25 dogbert11 left 20:43 dogbert11 joined 21:22 dogbert11 left 21:24 dogbert11 joined 22:15 dogbert11 left, dogbert11 joined 22:22 dogbert17 joined, dogbert11 left 23:16 dogbert11 joined 23:18 dogbert17 left
lizmat gfldex: can't think of a particular reason for this inconsistency 23:27
gfldex There is actually a test for Inf in line github.com/rakudo/rakudo/blob/mast....pm6#L1406 . 23:49
lizmat: tail is using iterators that in turn throw X::Cannot::Lazy, while first is using nqp::while . 23:54