Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Persistent memory allocator for data-centric analytics

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
Unknown
LICENSE-MIT
NotificationsYou must be signed in to change notification settings

LLNL/metall

Repository files navigation

CI TestDocumentation StatusDeploy API Doc

Metall: A Persistent Memory Allocator for Data-Centric Analytics

  • A memory allocator enables applications to transparently allocate data into a file system.

    • From applications, Metall looks like a normal heap allocator.

    • Applications can keep their data beyond single process life cycles and reattach the data in succeeding runs.

    • Leverages the memory-mapped file mechanism (i.e.,mmap(2)) tomap application data in files to the main memory.

  • Employs the API developed byBoost.Interprocess.

    • Useful for allocating C++ data structures (including STL containers).
  • Incorporates state-of-the-art allocation algorithms.

  • Provides a space-efficient snapshot/versioning, leveraging the reflink copy mechanism in file systems.

  • See details:Metall overview slides.

Getting Started

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

All core files exist undermetall/include/metall/.

Required

  • Boost C++ Libraries 1.80 or more.
    • Build is not required; needs only their header files.
  • C++17 compiler
    • Tested with GCC 8.1 or more; however, 8.3 or more is recommended due to early implementation of the C++ Filesystem library.

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.gztar xvf boost_1_80_0.tar.gzexport BOOST_ROOT=$PWD/boost_1_80_0git clone https://github.com/LLNL/metallexport METALL_INCLUDE=$PWD/metall/includeg++ -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 onSpack.

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++ Librariesspack 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_ROOTg++ -std=c++17 your_program.cpp -lstdc++fs -I${BOOST_ROOT}/include -I${METALL_ROOT}/include

Metall with Connan

Metall is also available onConan, thanks to theDICE research group.Conan Metall package information ishere.

Use Metall from Another CMake Project

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

Build Example Programs

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

Documentations

Generate API documentation using Doxygen

A Doxygen configuration file ishere.

To generate API document:

cd metallmkdir build_doccd build_docdoxygen ../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 theApache License (Version 2.0). Users may choose either license, at theiroption.

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

SeeLICENSE-MIT,LICENSE-APACHE,NOTICE, andCOPYRIGHT for details.

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

Release

LLNL-CODE-768617

About

Persistent memory allocator for data-centric analytics

Topics

Resources

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
Unknown
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp