Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
00:02 reportable6 left 00:03 reportable6 joined 05:24 linkable6 left, evalable6 left, evalable6 joined 05:26 linkable6 joined 06:02 reportable6 left 06:05 reportable6 joined
Nicholas nine: did I read that right - a pure Raku re-implementation is within 50% of the speed of Perl with Inline::C ? 07:39
nine indeed 07:42
Nicholas That seems newsworthy
japhb That is *awesome*
moon-child nine++++ 07:43
Nicholas so, how many programmers competant at C do you have at work? And how many competant to maintain that code now? :-)
japhb Not just C, XS
Nicholas (this might actually be the same number. I phrased it slightly carefully)
nine To be fair, I probably could have gotten at least a factor of 10 (maybe 100?) more out of the Perl solution - by turning it into a C thing with Perl essentially just being the program loader. But essentially I pushed the hybrid code as far as I could without re-doing the whole architecture. 07:44
Nicholas japhb: if it's "only" Inline::C it might be possible to make it work without knowing XS. If all you're doing are "leaf" functions. *BUT* as soon as you get to arrays, it's going to need XS
nine: and your factor of 10 would save you how much hardware?
(I'm guessing this isn't like my ex $ork, where not-in-C is going to get *expensive*) 07:45
(like maybe a 6 figure sum)
japhb Nicholas: He quoted lines like "double const geo_distance = SvNV(*(hv_fetch(distances_hv, name_pv, name_len, 0)));" so I figured he was well into XS land.
nine The problem in this case is not really hardware cost, but development time. The simulation requires tuning every so often (due to changes in usage patterns). And this requires running it a lot, wasting hours and hours.
Nicholas oh, I missed that. Yes, that's well into XS 07:46
but, now you can parallelise it? :-)
nine The point where I figured that Raku may have a shot is actually that hash access. Because we have proper objects and attribute access is lightning speed compared to hash access.
Yes, and just adding ".hyper" in a single place already got me to 3.5s Raku vs. 5s Perl in my 200 iteration test case 07:47
japhb I still have to remind myself of that (the switch from Perl on attribute v. hash element access)
nine Unfortunately this revealed the issue I mentioned in #raku-dev yesterday, but we'll fix that at some point
Being only twice as slow is already a victory and makes it possible to use this in production. The point of the exercise is that someone else but me can take over maintenance and tuning, and having to grok that XS stuff in addition to the math is asking just a bit too much 07:49
And maybe we can fix the .hyper issue in time, then it's a done deal for sure 07:50
I also think that it took me less time to speed up the Raku version than the original Perl code. 07:54
lizmat maybe that leaves time for a blog post :-) 08:05
08:08 LizBot left 08:09 LizBot joined, LizBot left, LizBot joined 08:24 LizBot left, LizBot joined 08:25 LizBot left, LizBot joined
MasterDuke nine: where was it you said the precomp renaming should be patched for windows? 08:54
nine MasterDuke: CompUnit::PrecompilationStore::File 08:59
MasterDuke thanks 09:01
09:14 linkable6 left 09:16 linkable6 joined
jnthnwrthngtn nine: I'm looking for an issue for the hyper thing you mentioned; is it still to be created or did you plan to look at it yourself? 09:21
nine jnthnwrthngtn: ah, sorry, will create an issue right away. Since I investigate most issues I find myself, I'm lazy about feeding Github. But help would be greatly appreciated! 09:31
jnthnwrthngtn: github.com/rakudo/rakudo/issues/4410 10:04
jnthnwrthngtn Hm, that error implicates a supply or react block somewhere 10:50
The Supplier patch is thus very unlikely to be guilty 10:51
Hm, though with the stacktrace Liz just posted it looks a bit like some object is undefined and we end up calling .emit in Mu where we shouldn't be 11:00
nine Yes, that's about how far I got. Which made me suspect spesh, but that turned out to be wrong
jnthnwrthngtn I suspect it's a race 11:05
.oO( The clue's in the name of the construct! )
More likely at the raku level than deeper 11:06
MasterDuke is it just .hyper or .race also? 11:07
nine race also
11:16 Altai-man joined 11:19 sena_kun left 12:02 reportable6 left 12:03 reportable6 joined 15:42 bisectable6 left, unicodable6 left, benchable6 left, tellable6 left, quotable6 left, bloatable6 left, shareable6 left, committable6 left, reportable6 left, releasable6 left, greppable6 left, notable6 left, coverable6 left, linkable6 left, sourceable6 left, squashable6 left, statisfiable6 left, nativecallable6 left, evalable6 left 15:43 releasable6 joined, greppable6 joined, statisfiable6 joined, benchable6 joined, notable6 joined, bloatable6 joined 15:44 tellable6 joined, reportable6 joined, shareable6 joined, linkable6 joined, squashable6 joined 15:45 coverable6 joined, sourceable6 joined, evalable6 joined, bisectable6 joined, committable6 joined, quotable6 joined, unicodable6 joined, nativecallable6 joined 18:02 reportable6 left 18:03 reportable6 joined 19:00 linkable6 left 19:02 linkable6 joined 19:05 Kaiepi left 19:24 ilogger2 left, ilogger2 joined 20:45 Kaiepi joined 20:49 squashable6 left 20:50 squashable6 joined 20:51 squashable6 left 20:53 squashable6 joined 21:39 linkable6 left 21:42 linkable6 joined 22:58 bisectable6 left 22:59 bisectable6 joined 23:00 linkable6 left 23:03 linkable6 joined