I think the Von Neumann bottleneck is mostly a feature. The fact that communication of information across distances is expensive should not be immediately assumed to mean that it is universally flawed to do this. You are paying for something when you use all those joules. I'd argue we are usually wasting our energy with regard to information communication (e.g., lighting up a network interface & copper because we couldn't be bothered to use SQLite), but other times this stuff is fundamentally required for practical solutions to exist.
Samsung's Processing-in-Memory (PIM) (chipsandcheese.com)
bob1029 16 hours ago
Eridrus 16 hours ago
trollbridge 15 hours ago
jeffbee 15 hours ago
zeusk 11 hours ago
therealcamino 10 hours ago
teiferer 8 hours ago
zeusk 8 hours ago
ACCount37 8 hours ago
hinkley 8 hours ago
zeusk 8 hours ago
You're only restricted by the fragmentation of the system memory which is an issue yes, but it's dealt with in other ways.
hinkley 8 hours ago
We've kind of half-assed it with DDR memory banks, but it mostly introduces mysterious slowdowns that are difficult to reason about and I think we would be better served I think by making a formal thing. Instead of introducing an L4 cache we could do this instead, and reduce the size of the L1-L3 caches, which shortens lookup time and thus latency.
For legacy apps, you could provide facilities for the OS to 'page' blocks in from main memory, but the speed would come from managing the workload imperatively, starting loads in the background before the data is actually needed, and dumps after it is last touched.
po1nt 15 hours ago
Then, by simply asking for a special memory address you could have access to registers/regions within PID RAM that serve as a result region.
Let's say you would need to run a sum over megabytes of data like for accounting. You could just ask RAM to do it and load just the result. The bandwidth would could be 8x higher and software could stay the same.
Doing scalar operations, frequent dereferencing and similar would not get much peformance benefit in many cases, as loading and accessing CPU cache is often much faster. But simple vector operations over large data could be massive.
Having accelerators on RAM like for jpeg compression, audio decoding or mass data operations could be beneficial but you would need to be careful with heat dissipation.
Personally I'm a big fan of the "in-ram accelerator" idea especially for server space. Doing fuzzy search in RAM could be massive performance improvement.
bob1029 14 hours ago
I think we are essentially reinventing SSE, AVX & friends from first principles. This is already being done. Compare the speed of libjpegturbo to a non-vectorized implementation and you'll find a 2-4x difference in throughput.
EPWN3D 13 hours ago
I can imagine some power savings for always-on display applications too. Rather than periodically waking the CPU/GPU to update the frame buffer, you can just stash small bits of periodic logic in memory (e.g. move the second hand of a clock).
saltcured 12 hours ago
I assume PIM is only going to work well for chunky streaming over the data within that particular memory module. Something that address and operate on whole rows at once and has minimal buffering between the RAM access ports and the PIM register state.
A lot of SIMD code can be on two array operands, and I expect this PIM approach only works well if both are stored locally in the same memory "local" to the PIM and where it can efficiently interleave at the natural addresisng and access widths. Too much random access or needing "remote" data sounds like the point where PIM fails and you need the elaborate memory IO controllers and caching subsystems of CPUs sitting on top of the distributed memory modules..?
ElectricalUnion 10 hours ago
Don't we already have those in mainstream computing in the form of dedicated silicon in DMA controllers? Programmed input–output performance is often low throughput, high jitter and uses a lot of CPU.
saltcured 10 hours ago
I think the whole idea of PIM is to be able to scale up and do work locally within the memory module, without the bottleneck of the system memory bus. This only works for embarrassingly parallel workloads that don't actually depend on the bisection bandwidth across the global memory.
If you start talking about PIM that is all interconnected, your application is back to being bound by the system memory bus. Maybe it's a new package design, but you're basically building yet another NUMA interconnect architecture, not a PIM architecture.
bayindirh 9 hours ago
teiferer 8 hours ago
It's been many decades since the last time somebody ran a sum over megabytes of data for accounting and though "damn that's a bottleneck I need to optimize".
> Personally I'm a big fan of the "in-ram accelerator" idea especially for server space.
The operations this model supports are so extremely limited that you would be hard pressed to find applications where it's worth it.
touisteur 5 hours ago
hinkley 8 hours ago
Two decades ago it was a challenge to get people to see that what they were doing was preventing horizontal scaling. Today horizontal scaling is table stakes and people don't even always register that they are doing it. It's just how we do things, no thoughts.
PIM requires problems to be decomposed into horizontal scaling problems. Then what you should do with PIM is take a problem that used to be solved by 2 racks of computers and squeeze it down to less than half a rack by stuffing a bunch of these into a single box to do 8-10x as much work per box (and double the cluster size to offset Jevons' Paradox because it's so cheap now that you'll do 2x as much of it)
HarHarVeryFunny 14 hours ago
Obviously you (eventually) need your data where the compute is, especially in a non-von-Neumann architecture where moving data around isn't an option even if you were OK with the performance drop.
It seems kinda obvious that eventually AI will be implemented as low power dataflow custom chips integrating memory/state & compute, but who knows!
samuelknight 18 hours ago
p1esk 14 hours ago
But some do end up in the industry: Mythic AI, Encharge AI, d-Matrix.
londons_explore 19 hours ago
Matrix multiplication involves getting every entry of the input and output matrices to be at the same multiplier at the same time. (Ie. N^2).
To do that, a lot of data movement needs to happen. Movement is the main thing - the multiplication and addition is a sideshow as far as energy and silicon space is concerned. You need a 'around the chip' ring shift register to pass every element of one matrix past every element of the other.
zozbot234 19 hours ago
rivetfasten 14 hours ago
ACCount37 8 hours ago
Also spares us the trouble of dealing with weights. By the time we're in QKV realm, the weights have already weighted.
danmaz74 19 hours ago
dotancohen 18 hours ago
If AI really is going to eat all our jobs, then matrix multiplication in memory is almost a requirement.
PessimalDecimal 15 hours ago
Intel's Advanced Matrix Extensions (AMX) and the dedicated tile registers, which are basically systolic arrays IIUC, seem like a better fit.
But Samsung doesn't have that option so they're playing the card they have.
londons_explore 8 hours ago
Elegant designs don't win anymore.
IsTom 8 hours ago
stinkbeetle 18 hours ago
How clear is that? The idea has been around for about 60 years, and many attempts made by people who thought the same thing. Maybe this time it'll be the future.
trentor 18 hours ago
therealcamino 10 hours ago
convolvatron 16 hours ago
what I find strange is the adoption of a standard synchronous dram interface. that's a horrible left over piece of architecture that severely constrains the applicability of this device. control flow on the dram side can't initiate any transactions on its own, or respond after work has been done - its like usb, except with a hard limit on the response.
that severely limits the utility of the in-memory processors to doing things like encryption and compression - but even then those impose delays that effect the consistency model across that interface.
jandrewrogers 14 hours ago
At this point processing-in-memory has taken on the aura of fusion power.
ActorNightly 6 hours ago
throwaway173738 13 hours ago
pragma_x 19 hours ago
vardump 14 hours ago
OptionX 19 hours ago
dotancohen 18 hours ago
sciencesama 2 hours ago
tesnorindian 17 hours ago
consp 21 hours ago
manmal 21 hours ago
WithinReason 20 hours ago
PunchyHamster 20 hours ago
yvdriess 20 hours ago
reliabilityguy a day ago
That being said, I am not sure what’s the killer application for this technology, and without such application adoption is unlikely.
xyzzy123 21 hours ago
Imagine (this is a fantasy pitch but potentially achievable for some use cases) wanting to run a larger llm and all you have to do is buy more RAM so it fits.
embedding-shape 21 hours ago
Isn't this how it works today already? Granted you wanted to run it on RAM rather than VRAM.
petu 20 hours ago
According to the article/Samsung RAM dies inside can support way higher bandwidth than they expose, they're limited by external interface / bus width:
> Together, they can utilize the chip’s internal bandwidth across all 16 banks, which comes out to 614 GB/s. For comparison, regular DRAM accesses can hit two banks in parallel and max out at 76.8 GB/s.
And that's just for single 64-bit IC. So way faster and more power efficient.
dannyw 17 hours ago
Consumer platforms have been stuck at dual channel for decades; most of it I attribute to intentional product segmentation. I'm hoping that LLMs might change eventually for an upcoming consumer platforms; going to 4 channel would be really nice.
zerd 12 minutes ago
amelius 20 hours ago
AI: "Sorry, all the hardware is made for running AI."
eru 18 hours ago
reliabilityguy 19 hours ago
Sure, MACs are nice. However, unless there other, PIM-specific/optimal, algorithms, regular matrix multiplication algorithms like tiling-based won’t work here I think — how would the tile be shared? By doing read/write all the time?
whatshisface 11 hours ago
reliabilityguy 10 hours ago
Also, doesn’t it mean that you forgo batching?
ACCount37 8 hours ago
reliabilityguy 2 hours ago
How would you do map-reduce across multiple DIMMs w/o extra reads/writes?
PIM implies some sort of distributed compute, which can work for some cases, but I am not sure LLMs are one of them.
whatshisface 44 minutes ago
netfortius 21 hours ago
Build it, and they will come ;)
imtringued 19 hours ago
You have an eight socket server with 96 memory slots, you add 96x PIM memories into the server (optimistic), load all the LLM parameters or KV cache in RAM and exclusively let it perform GEMV and let it rip.
614 GB/s x 96 = 58,944 GB/s.
Alternatively, the memory is used for embedded inference tasks. You can now upgrade from the limited single or two digit MB SRAM accelerators to reasonably fast single digit gigabyte models. Without MoE you could reach 100 tokens per second with an 8B fp8 model on a single channel. With MoE you might break 500 tokens per second.
hoppp 17 hours ago
throwaway173738 13 hours ago
reliabilityguy 2 hours ago
Won’t you have a bunch of extra reads/writes via the CPU because these DIMMs won’t be able to compute matrix multiplications?
mr_toad 19 hours ago
So how big are these banks? If you can’t fit the weights of a layer into one bank then presumably you lose a lot of the speed gains.
londons_explore 19 hours ago
imtringued 19 hours ago
The reason is quite simple. You can split the matrix along both dimensions so you just tile it into 64x64 or whatever fits into the bank and just fill it up. The biggest problem is load balancing the tiles across all banks for maximum parallelism.
For GEMM I believe there is no point in doing PIM, you are better off with a GPU or NPU.
harshaw 18 hours ago
Tenoke 18 hours ago
roryirvine 18 hours ago
The question really is how soon we reach that tipping point, and whether it's before or after the current bubble runs out of steam for some other reason.
Tenoke 17 hours ago
There's no such ought really. Even at current levels you'd need like a 100x gain from here to approach current top proprietary models (probably a lot more for say Mythos or Mythos 2), and it's not like they are stoppng to improve. This is before we even account that you'd just be running 1 agent then, and not a swarm like you'd be able to in the cloud or that you can do only so much compression before you are losing out
eureka7 13 hours ago
Not everyone needs that large of a model, though.
UltraSane 18 hours ago
petra 14 hours ago
And in these types of hardware, the time between a successful prototype and a fully deployed product is pretty long. Maybe they count on that to know when to stop?
plywoodShadow 19 hours ago
topspin 17 hours ago
glitchbot 5 hours ago
bhouston 20 hours ago
https://ben3d.ca/blog/m5-max-samsung-lpddr5-pim-650-tokens-p...
asaddhamani 19 hours ago
howdyhowdy 15 hours ago
userbinator 21 hours ago
Add a new set of CPU instructions like “rep macb”
...and it's been long enough now, that I can say there was an effort to implement this on standard x86 memory controllers and have the existing string instructions do so, back in the days of SDR SDRAM, but the tradeoffs weren't (yet) in favour.
PunchyHamster 19 hours ago
nottorp 11 hours ago
latchkey 9 hours ago
krater23 19 hours ago
intrasight 18 hours ago
hham 18 hours ago
saejox 21 hours ago
rivetfasten 14 hours ago
ginko 19 hours ago