suyashmahar / libivy

Distributed shared memory using IVY central manager model.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Distributed shared virtual memory

Using IVY's fixed ownership model.

libivy's design and implementation is described in this paper: docs/libivy_paper.pdf.

Project structure

  1. analysis: Memory trace visualization
  2. libivy: IVY implementation as a shared object
  3. workloads: Parallel workloads written in C++
    1. psort: Parallel list sort
    2. pdot: Parallel vector dot-product
    3. pingpong: Page ping-pongs between two nodes
    4. pagefaultlatency: Calculates the cost of read and write page faults

API

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();

License

Except noted otherwise and excluding content under vendor/, libivy is convered under the BSD-3-clause license. Check LICENSE.

About

Distributed shared memory using IVY central manager model.

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 53.1%Language:Jupyter Notebook 41.5%Language:Makefile 3.9%Language:Python 1.6%