multiplying each visibility by a convolution function and adding the result to the $uv$-plane. In the simplest case, the convolution function is used for anti-aliasing purposes, although it can be used to compensate for primary beam affects, or in the case of $w$-projection, to compensate for non-coplanar baselines. $w$-projection uses a convolution function that is dependant on $w$, which is the convolution of an anti-aliasing function, and a Fresnel term.

While more efficient that other methods [@Cornwell08], $w$-projection does have some shortcomings. Firstly, the convolution functions take time to compute, and for a short observation, can dominate the time to compute an image. Secondly, the amount of memory to store the convolution functions can be large, and can exhaust the capabilities of a computing node. Finally, multiply-add operation is generally memory-bandwidth bound, so that the central processing unit (CPU) spends the majority of the time waiting for the data to arrive, and relatively little time doing the multiply-add operation.

The memory constraints of $w$-projection are of particular concern. The trend in computing has been for memory bandwidth to increase much more slowly than arithmetic capacity, which has roughly doubled every 18 months (Moore’s law), with this trend likely to continue 