2025/03/20

Newest at the top

2025-03-20 10:05:26 +0100 <[exa]> need the sparsity here, unfortunately
2025-03-20 10:05:16 +0100 <[exa]> Athas: I've got a bit too many bins which are huge
2025-03-20 10:05:04 +0100 <tomsmeding> with a fold per bin, right
2025-03-20 10:04:53 +0100 <Athas> If you have few bins, just do an outer loop over all bins.
2025-03-20 10:04:30 +0100 <[exa]> :D
2025-03-20 10:04:29 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-03-20 10:04:22 +0100 <tomsmeding> it's extremely hard to do so OK if you get zero primitives for them. :P
2025-03-20 10:04:13 +0100 <Athas> But my experience is that they don't crop up so often.
2025-03-20 10:04:04 +0100 <Athas> It's not so easy to do efficiently, but it's not so hard to do OK.
2025-03-20 10:03:41 +0100 <tomsmeding> Athas: you don't happen to know this, do you?
2025-03-20 10:03:29 +0100 <tomsmeding> I'm very confused why neither repa nor massiv seem to have a histogram operation of any kind
2025-03-20 10:03:14 +0100 <tomsmeding> I have no clue
2025-03-20 10:03:06 +0100tv(~tv@user/tv) tv
2025-03-20 10:01:23 +0100k_hachig(~k_hachig@2607:fea8:351d:ef0:7025:bda8:57fd:1c3b) k_hachig
2025-03-20 10:01:13 +0100tomsmedingwas just blindly looking for push arrays
2025-03-20 10:01:05 +0100 <tomsmeding> lol oops
2025-03-20 10:01:00 +0100merijn(~merijn@77.242.116.146) merijn
2025-03-20 10:00:59 +0100 <tomsmeding> oh wait
2025-03-20 10:00:50 +0100 <[exa]> now the other question is how to actually do the aggregation/sum there, for the histogram
2025-03-20 09:59:52 +0100 <tomsmeding> ah :)
2025-03-20 09:59:49 +0100 <[exa]> gooooood okay, saved
2025-03-20 09:59:44 +0100 <[exa]> ah wait there's one extra parentheses there
2025-03-20 09:59:32 +0100 <[exa]> yes the bool confuses me
2025-03-20 09:59:23 +0100 <tomsmeding> odd
2025-03-20 09:59:21 +0100 <tomsmeding> ah you get False if it was out of range?
2025-03-20 09:59:00 +0100 <tomsmeding> I have no clue what that Bool is
2025-03-20 09:58:47 +0100 <tomsmeding> the function you pass should use the element writing function _it_ gets passed to fill the destination array
2025-03-20 09:58:31 +0100 <tomsmeding> [exa]: makeLoadArray is the monadic thing, essentially
2025-03-20 09:57:38 +0100 <[exa]> btw the makeLoadArray is probably not it (or I don't see how to use it to tell it the index)
2025-03-20 09:57:32 +0100 <tomsmeding> I see
2025-03-20 09:57:17 +0100alfiee(~alfiee@user/alfiee) (Ping timeout: 244 seconds)
2025-03-20 09:56:19 +0100 <[exa]> say you're clustering stuff and you get a pathological case where everything gets into a single cluster (most algorithms have to interrupt and do stuff differently)
2025-03-20 09:55:28 +0100 <tomsmeding> [exa]: what do you mean with "reduced too much / too little"?
2025-03-20 09:55:15 +0100 <[exa]> so I'm not a big fan of having these glued into single functions
2025-03-20 09:55:02 +0100 <[exa]> which implies you need some custom code between the scan and permute
2025-03-20 09:54:46 +0100 <[exa]> in most cases that I've seen in practice there's usually a switch that triggers if the array reduced too much or too little (usually corner cases), which is preferably triggered before the costly aggregation takes place
2025-03-20 09:52:48 +0100alfiee(~alfiee@user/alfiee) alfiee
2025-03-20 09:51:41 +0100 <tomsmeding> I still don't see what the connection with dynamic sizing is :p
2025-03-20 09:51:33 +0100 <tomsmeding> the explicit representation markers in repa and massiv help a bit
2025-03-20 09:51:28 +0100 <tomsmeding> functional array languages are not very good at controlling allocation, yes
2025-03-20 09:50:58 +0100 <[exa]> yeah, mostly. but you always need to allocate somehow, right?
2025-03-20 09:50:21 +0100 <tomsmeding> [exa]: that sounds like it's more about allocation than about dynamic sizing?
2025-03-20 09:49:37 +0100 <[exa]> (usually it can't)
2025-03-20 09:49:28 +0100 <[exa]> like, it's okay but if your arrays are a few tens of gigabytes you can't just allow the program to yolo allocate a new one
2025-03-20 09:48:47 +0100 <tomsmeding> (I know of one where it isn't, which I recently learned of -- Dr.Jit -- and that's a rather strange one, as array languages go)
2025-03-20 09:48:08 +0100 <tomsmeding> this is supported first-class in the vast majority of array languages
2025-03-20 09:47:44 +0100 <tomsmeding> voilĂ , a data-determined array size
2025-03-20 09:47:33 +0100 <tomsmeding> let n = sum _ in generate [n] (\i -> _)
2025-03-20 09:47:05 +0100 <tomsmeding> it means not all shapes are known statically, but that's already the case if you can create arrays with runtime shapes
2025-03-20 09:47:02 +0100[exa]has his opinion on data-determined sizes