Designing far memory data structures: think outside the box
blog.acolyer.org
blog.acolyer.org
(Oddly enough, just did a search for "remote memory data structures" and guess what blog post and paper comes up!)
O(n^2) + rt * O(n)
time complexity (where rt is the round trip time). Of course this expression collapses to O(n^2), but by writing it like above you can more clearly see where the cost comes from.EDIT: on second thought, perhaps bring the rt under the O() together with n.
You could use a normal function. Like t(n) = f(n^2) + g(n) + rt
O(n^2) + O(m) * O(n)
where m is the number of roundtrips.
If memory serves, IRIX (SGI's UNIX OS) had both the metrics to see the latency of access, and the ability to migrate the data and/or the compute closer to each other.
ccNUMA was open-sourced and AMD uses it on their multi-core/multi-socket systems, though usually within the motherboard. Not so much leaving the case and interlinking SGI Origin system style (which is what the CRAYLink/NUMALink tech did).
There is a connector standard: https://www.hypertransport.org/ht-connectors-and-cables
Connectors available from Samtec: https://www.samtec.com/standards/ht3#connectors
Manycore CPU's and converged ethernet pretty much made it moot.
I think it should be technically possible inside your virtual network, if the cloud platform and network gear were to support it.
The main requirement to support this is that a RoCE or other RDMA API needs to be exposed inside the cloud VM. This requires (1) the physical boxes have RDMA (likely universal at this point), but also (2) the virtualized network adapter, e.g. AWS ENA, to expose an RDMA API, which is much harder.
AWS did not support any kind of RDMA when I looked into it last year. Azure does, but in my understanding this is only in their "supercomputer partition," which is not really a cloud environment.
I've heard that AWS is looking to write an ENA backend for GASNet (a communication library), which could perhaps (?!) lead to them exposing RDMA and other low-level NIC features.
Disclaimer: I work for Oracle.
In the context of this paper, though, "far memory" is referring to memory outside the local system that is accessed using RDMA instructions.
This paper is mostly about proposing new RDMA instructions, such as a relative load/store, that could make remote data structures more efficient.