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 +0100 | ljdarj | (~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 +0100 | tv | (~tv@user/tv) tv |
2025-03-20 10:01:23 +0100 | k_hachig | (~k_hachig@2607:fea8:351d:ef0:7025:bda8:57fd:1c3b) k_hachig |
2025-03-20 10:01:13 +0100 | tomsmeding | was just blindly looking for push arrays |
2025-03-20 10:01:05 +0100 | <tomsmeding> | lol oops |
2025-03-20 10:01:00 +0100 | merijn | (~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 +0100 | alfiee | (~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 +0100 | alfiee | (~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 |