LLNL / metall

Persistent memory allocator for data-centric analytics
Other
53 stars 13 forks source link
allocator cpp ecp exascale-computing memory-allocator persistent-memory

CI Test Documentation Status Deploy API Doc

Metall: A Persistent Memory Allocator for Data-Centric Analytics

Getting Started

Metall consists of only header files and requires some header files in Boost C++ Libraries.

All core files exist under metall/include/metall/.

Required

Build

To build your program with Metall, all you have to do is just setting include paths such as '-I' or CPLUS_INCLUDE_PATH.

For example,

# Download Boost (Boost C++ Libraries 1.80 or more is required)
# One can skip this step if Boost is already available.
wget https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz
tar xvf boost_1_80_0.tar.gz
export BOOST_ROOT=$PWD/boost_1_80_0

git clone https://github.com/LLNL/metall
export METALL_INCLUDE=$PWD/metall/include

g++ -std=c++17 your_program.cpp -lstdc++fs -I${BOOST_ROOT} -I${METALL_INCLUDE}

Unofficial Support For Clang

Clang can be used instead of GCC to build Metall. However, we haven't tested it intensively.

Package Manager Support

Metall with Spack

Metall package is also available on Spack.

As Metall depends on Boost C++ Libraries, Spack also installs a proper version of Boost C++ Libraries automatically, if needed.

# Install Metall and Boost C++ Libraries
spack install metall

# Sets environment variables: BOOST_ROOT and METALL_ROOT.
# Boost C++ Libraries and Metall are installed at the locations, respectively.
spack load metall

# Build a program that uses Metall
# Please note that one has to put 'include' at the end of BOOST_ROOT and METALL_ROOT
g++ -std=c++17 your_program.cpp -lstdc++fs -I${BOOST_ROOT}/include -I${METALL_ROOT}/include

Metall with Connan

Metall is also available on Conan, thanks to the DICE research group. Conan Metall package information is here.

Use Metall from Another CMake Project

To download and/or link Metall package from a CMake project, see example CMake files placed here.

Build Example Programs

Metall repository contains some example programs under example directory. One can use CMake to build the examples. For more details, see a page here.

Documentations

Generate API documentation using Doxygen

A Doxygen configuration file is here.

To generate API document:

cd metall
mkdir build_doc
cd build_doc
doxygen ../docs/Doxyfile.in

Publication

Keita Iwabuchi, Karim Youssef, Kaushik Velusamy, Maya Gokhale, Roger Pearce,
Metall: A persistent memory allocator for data-centric analytics,
Parallel Computing, 2022, 102905, ISSN 0167-8191, https://doi.org/10.1016/j.parco.2022.102905.

About

Contact

License

Metall is distributed under the terms of both the MIT license and the Apache License (Version 2.0). Users may choose either license, at their option.

All new contributions must be made under both the MIT and Apache-2.0 licenses.

See LICENSE-MIT, LICENSE-APACHE, NOTICE, and COPYRIGHT for details.

SPDX-License-Identifier: (Apache-2.0 OR MIT)

Release

LLNL-CODE-768617