01:29 nine left 01:30 nine joined
ab5tract lizmat awesome! :D 06:42
^^ ( <1K open issues) 06:43
09:08 MasterDuke left 09:37 sena_kun joined
Geth roast: 994d0be545 | (Elizabeth Mattijsen)++ | S05-grammar/inheritance.t
Add test for #2851
09:50
10:01 sena_kun left 10:04 sena_kun joined, sena_kun left 11:13 doomlord joined
doomlord Hello, what would it take to change the MultiDimArray repr to use an array to implement fixed dimensions as strides and expose this functionality to raku-code? 11:15
I think that’s how people do this nowadays 11:16
Changing the C side is trivial, how do you expose that to Raku? 11:17
lizmat through NQP or through dispatch calls: disclaimer: never done that myself 11:19
question probably better asked on #moarvm
nine patrickb ab5tract suggestions?
11:20 doomlord left, doomlord joined
doomlord lizmat: thanks, was it considered to implement that in pure raku on top of the Buf representation? That would be an alternative solution (dunno about performances) 11:22
11:24 doomlord left 11:25 doomlord joined
lizmat I don't think jnthn ever considered that... but I have at some point :-) 11:27
if only for the fact that it would also run on the JVM
doomlord Indeed
lizmat also: I think with new-disp, I think a pure Raku / nqp implementation would only be 1 magnitude slower than a pure C one 11:28
doomlord Would be nice to hear some arguments against that 11:29
A part this performance aspect
11:29 doomlord left
Geth rakudo/main: a9c9e39850 | (Elizabeth Mattijsen)++ | src/core.c/Complex.rakumod
Make prefix - not negate 0 as real value in i

Fixes #2986
11:43
roast: f74eff7a6a | (Elizabeth Mattijsen)++ | S32-num/complex.t
Add tests for #2986
11:44
rakudo/main: 1cedcee68f | (Elizabeth Mattijsen)++ | t/12-rakuast/xx-fixed-in-rakuast.rakutest
Add test for #2996
11:49
11:52 doomlord joined
doomlord lizmat: I think the future proof way would be to give the possibility for Bufs to move between devices. As it can be done in torch 11:54
11:54 doomlord left 11:55 doomlord joined
lizmat "Bufs to move between devices" what do you mean by that? 11:55
doomlord Practice shows that the overhead is easily overcome by running shaders on the gpu
I mean that now there is the assumption that Bufs are on the main memory 11:56
lizmat ah, ok, gotcha
doomlord This is not the case in modern numerical libraries , a Buf can live on the gpu
lizmat I suggest making a problem solving issue for this, so more people can take part in this discussion 11:58
doomlord Indeed
lizmat afk for quite a few hours&
11:59 doomlord left
nine I think a more productive way is to just dig into it and provide an example implementation. You can easily base your fixed dimensional array on a 1 dimensional native array or even a Buf (though I don't think Buf provides any advantages here). 12:29
Doing it in pure Raku lets you focus on the API and algorithms first. When you have figured those out, you can profile and check where the performance bottleneck actually is and what changes to the VM would improve that state. Maybe it requires the VM knowing more about the storage format but maybe it's just better optimization of natively typed code in general. 12:30
If you want to be able to store it in GPU memory, then maybe basing on Buf is indeed helpful. 12:32
FWIW I have long considered heterogenous architectures (i.e. GPU computing) to be a bit of an archilles heel or architectural blind spot of Raku. But maybe it's not all that bad. I guess we'll only know once someone does actually try to use GPUs from Raku for some heavy computation. 12:34
After all Python of all languages is used heavily in this area. Though it's really just used to set up the computation pipeline rather than computation itself. 12:36
timo python's "buffer" API is something i've wanted for raku in the past 13:04
14:41 doomlord joined
doomlord timo: what does python buffer have that raku ones don’t have? The ability to alias each other? 14:42
nine: I think that raku lazy evaluation fits gpu computing. For instance one could imagine multiple matrix operations to be piled up by the language as in a Seq of operation, that then gets executed into a pipeline when the result is requested. This could be a high level interface 14:44
Like it happens in python 14:46
Compiling raku to gpu? I don’t think that’s feasible. An idiomatic low lever api to Vulkan or other computing shaders on nativish buffers would possibly be an easier project 14:48
Something like Inline::* 14:49
14:49 doomlord left 14:58 doomlord joined
doomlord It should support standard well thought libraries 15:02
such as BLAS. As well as abominations such as rocm.docs.amd.com/projects/composa...ocs-5.7.1/
15:02 doomlord left
timo what i mean by the buffer api as that you can just get a binary view into many different kinds of objects 16:01
what's this syntax that i just discovered 17:16
m: class Test { has (Rat); }
camelia ( no output )
17:42 sena_kun joined
Geth roast: 4489a37e86 | (Elizabeth Mattijsen)++ | S05-grammar/inheritance.t
Add test for #3038
18:17
roast: 0e25ee24b8 | (Elizabeth Mattijsen)++ | S16-filehandles/open.t
Add test for #3073
18:44
roast: e5baa0c63b | (Elizabeth Mattijsen)++ | S04-exception-handlers/catch.t
Add test for #3080
18:55
roast: 3cd5e8d87d | (Elizabeth Mattijsen)++ | S04-declarations/state.t
Add tests for #3083
18:59
roast: 0f6824e95b | (Elizabeth Mattijsen)++ | S02-lexical-conventions/comments.t
Add test for #3143
21:46
22:05 sena_kun left 22:19 sena_kun joined 22:26 sena_kun left
[Coke] hurls github.com/orgs/community/discussions/141112 23:17
upvote if you like.