Using IVY's fixed ownership model.
libivy's design and implementation is described in this paper: docs/libivy_paper.pdf.
- analysis: Memory trace visualization
- libivy: IVY implementation as a shared object
- workloads: Parallel workloads written in C++
- psort: Parallel list sort
- pdot: Parallel vector dot-product
- pingpong: Page ping-pongs between two nodes
- pagefaultlatency: Calculates the cost of read and write page faults
Note: libivy only supports C++20
// Create an object of the class `IVY` with the config file and node ID
Ivy ivy("path/to/config", id);
// Automatically sets up the shared memory and all the handlers
auto [shm, err] = ivy.get_shm();
if (err.has_value()) throw std::runtime_error(err.value());
auto *ul_arry = reinterpret_cast<uint64_t*>(shm);
// Write to the shared region
ul_array[0] = 0xDEADBEEF;
// Unmount the shared memory
ivy.drop_shm();
Except noted otherwise and excluding content under vendor/, libivy is convered under the BSD-3-clause license. Check LICENSE.