Halve the cell size of a 3-D velocity model and you do not double the memory. You multiply it by eight. That cubic scaling is the quiet tyrant behind every story that ends "and then we ran out of GPU memory", and it decides, long before anyone writes a line of physics, how large a piece of the Earth you can model on the hardware in front of you.
The model is a memory monster
A 3-D velocity model is a grid. Its cost is the number of cells, and the number of cells is the cube of how finely you sample each axis. Going from 40 km cells to 20 km over the same volume does not add half again. It adds eight times. Add the fields a solver actually carries, wavefields, gradients, optimiser state, and the multiplier grows from there.
This is why intuition fails. Practitioners reason linearly about resolution because most costs in their working life are linear. Here the cost is cubic, and the difference between those two mental models is the difference between a run that fits and a run that dies at hour six.
The ceiling is fixed, and it is closer than it looks
Device memory is a hard wall, not a soft constraint. You do not get a slower run when you cross it; you get no run. And because the curve is cubic, the wall arrives suddenly: the cost is nearly flat across most of the resolution range you might consider, then turns almost vertical over a narrow band.
That shape has a practical consequence worth internalising. When you are comfortably under the ceiling you can refine almost for free, and it feels as though there is room. The moment you approach it, one more refinement step is unaffordable. Teams routinely plan as though the last step will cost what the previous one did, and it costs eight times more.
Memory for half the cell size
Device ceiling, one accelerator
Useful batch size at the ceiling
Cost growth per axis refinement
Why batch size 1 is a design point, not an apology
In most deep learning a batch size of 1 is a symptom of something wrong. Here it is the expected operating point, and understanding why changes how you engineer.
One model instance already fills the device. There is no room for a second, so the batch is one by construction. Everything that ordinarily depends on batching has to be reconsidered: batch normalisation has no batch to normalise over and gives way to group or instance normalisation; gradient noise is higher because each step sees one sample; and throughput comes from gradient accumulation across steps rather than from parallel samples within one.
None of that is a workaround. It is the correct engineering for a regime where a single sample is the unit of work, and treating it as a deficiency to be fixed leads teams to shrink the model until batching returns, which is the wrong trade.
The engineering game is moving the ceiling
Given a fixed wall, the useful work is the work that moves it. Mixed precision halves the bytes per value. Gradient checkpointing trades recomputation for stored activations. Domain decomposition splits the volume across devices, at the cost of communication at the seams. Each of these buys a factor, and each factor buys back one refinement step, because a factor of eight in memory is exactly one halving of cell size.
That exchange rate is the number to carry around. It tells you immediately whether an optimisation is worth the complexity: an engineering effort that saves 20 percent of memory does not buy a finer grid, it buys a slightly less anxious run at the same grid. Only a factor of eight moves you a full step.
Zooming out
The cubic wall is not specific to seismology. It is the shape of every volumetric problem, from medical imaging to computational fluid dynamics to climate. The practical discipline is the same in all of them: work out the exchange rate between memory and resolution before choosing a grid, expect the wall to arrive suddenly rather than gradually, and judge each optimisation by whether it buys a whole refinement step or merely postpones the conversation.
Key takeaways
- Memory in a 3-D model scales with the cube of resolution, so halving cell size multiplies cost by eight rather than doubling it.
- The device ceiling is a hard wall: crossing it produces no run at all, not a slower one.
- Because the curve is cubic, the wall arrives suddenly, and the last refinement step costs eight times the previous one.
- Batch size 1 is the design point when one model instance fills the device, so normalisation and gradient strategy should be chosen for that regime rather than fought.
- A factor of eight in memory buys exactly one halving of cell size, which is the exchange rate for judging whether an optimisation is worth its complexity.



