News for hackers. Stuff that matters.
Re:Decreasing the Number of Memory Accesses 1/2 by flohofwoe on Friday March 31, 2023 @05:43AM (#35384637)
Compilers really shouldn't do this under the hood, it adds more complexity to the compiler, which makes it also more likely that things break in unexpected ways.

Instead these should be explicit programming language features (like defining a regular struct but then slice this struct into an SoA).

The rest should be handled by debugging and profiling tools which need to be much better integrated into the programming workflow than what is common today.

Re:Decreasing the Number of Memory Accesses 1/2 by AgentOrange1234 on Friday March 31, 2023 @04:27PM (#35393134)
Huh. But putting the complexity into the compiler once, instead of into every application where we would need to manually fuse loops, etc., seems like a huge win for net complexity and readability?

(I’m sympathetic to the concern of things breaking in unexpected ways.)

Re:Decreasing the Number of Memory Accesses 1/2 by flohofwoe on Saturday April 01, 2023 @09:00AM (#35399989)
You can design the language to make such transforms more transparent without resorting to special 'compiler optimization magic'.

For instance Zig has a MultiArrayList container in its stdlib which slices its generic item type into one array for each struct item. This isn't a special compiler feature, but a regular usage of Zig's comptime stuff:

https://github.com/ziglang/zig/blob/master/lib/std/multi_arr...

Re:Decreasing the Number of Memory Accesses 1/2 by AgentOrange1234 on Saturday April 01, 2023 @04:11PM (#35403637)
Yeah! And there is definitely value in certain domains for having predictable performance.

On the other hand, giving up that control and designing languages where more automatic optimizations are possible also seems really great. A lot of programming shouldn’t be concerned with low level perf anymore.

Re:Decreasing the Number of Memory Accesses 1/2 by hansvm on Saturday April 01, 2023 @09:57PM (#35406337)
That's a really hard thing for a compiler to predict though. I recently got a 2x performance boost just by switching to an array of struct of array representation (making the cache lines have more data that actually matters), and the only reason it made a difference was the access pattern of a mildly non-trivial algorithm acting on that data (not hard per se, but definitely hard for a compiler to optimize through).
Re:Decreasing the Number of Memory Accesses 1/2 by mncharity on Friday March 31, 2023 @04:31PM (#35393201)
>> I really want compilers to be able to make these changes.

> Compilers really shouldn't do this under the hood, it adds more complexity to the compiler [...] Instead [...] like [...] SoA

Curious. I read GP as "I really want to be able to tell compilers to make these changes", but with exception of your SoA example, all (5) responses assumed it was a desire for a sufficiently magical black-box optimizer. Which in retrospect seems plausible, but first seemed to me quite odd. Of course you want to be able to slap in a paragraph of Halide, or annotate with memory organization... <puzzled expression>. Too much time thinking metaprogramming open compilers and inline multilingualism.