metall

Persistent memory allocator for data-centric analytics

https://github.com/llnl/metall

Science Score: 85.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, sciencedirect.com
  • Committers with academic emails
    7 of 9 committers (77.8%) from academic institutions
  • Institutional organization owner
    Organization llnl has institutional domain (software.llnl.gov)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.6%) to scientific vocabulary

Keywords

allocator cpp ecp exascale-computing memory-allocator persistent-memory
Last synced: 6 months ago · JSON representation ·

Repository

Persistent memory allocator for data-centric analytics

Basic Info
  • Host: GitHub
  • Owner: LLNL
  • License: other
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 77.5 MB
Statistics
  • Stars: 55
  • Watchers: 9
  • Forks: 14
  • Open Issues: 3
  • Releases: 33
Topics
allocator cpp ecp exascale-computing memory-allocator persistent-memory
Created almost 7 years ago · Last pushed 7 months ago
Metadata Files
Readme License Citation

README.md

CI Test Documentation Status Deploy 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)) to map application data in files to the main memory.
  • Employs the API developed by Boost.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 under metall/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 CPLUSINCLUDEPATH.

For example,

```bash

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/boost1800.tar.gz tar xvf boost1800.tar.gz export BOOSTROOT=$PWD/boost1800

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

g++ -std=c++17 yourprogram.cpp -lstdc++fs -I${BOOSTROOT} -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.

```bash

Install Metall and Boost C++ Libraries

spack install metall

Sets environment variables: BOOSTROOT and METALLROOT.

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 BOOSTROOT and METALLROOT

g++ -std=c++17 yourprogram.cpp -lstdc++fs -I${BOOSTROOT}/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:

bash 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

Owner

  • Name: Lawrence Livermore National Laboratory
  • Login: LLNL
  • Kind: organization
  • Email: github-admin@llnl.gov
  • Location: Livermore, CA, USA

For over 70 years, the Lawrence Livermore National Laboratory has applied science and technology to make the world a safer place.

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: >-
  Metall: A Persistent Memory Allocator for
  Data-Centric Analytics
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Keita
    family-names: Iwabuchi
    email: kiwabuchi@llnl.gov
    affiliation: ' Lawrence Livermore National Laboratory'
    orcid: 'https://orcid.org/0000-0002-9395-0843'
  - given-names: 'Roger '
    family-names: Pearce
    affiliation: Lawrence Livermore National Laboratory
  - given-names: Maya
    family-names: Gokhale
    affiliation: Lawrence Livermore National Laboratory
identifiers:
  - type: url
    value: 'https://doi.org/10.11578/dc.20190410.1'
repository-code: 'https://github.com/LLNL/metall'
abstract: >-
  Metall is a persistent memory allocator built on
  top of the memory-mapped file mechanism.

  Metall enables applications to transparently
  allocate custom C++ data structures into various
  types of persistent memories.

GitHub Events

Total
  • Create event: 21
  • Release event: 2
  • Issues event: 8
  • Watch event: 3
  • Delete event: 14
  • Issue comment event: 17
  • Push event: 45
  • Pull request review event: 2
  • Pull request event: 30
  • Fork event: 1
Last Year
  • Create event: 21
  • Release event: 2
  • Issues event: 8
  • Watch event: 3
  • Delete event: 14
  • Issue comment event: 17
  • Push event: 45
  • Pull request review event: 2
  • Pull request event: 30
  • Fork event: 1

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 726
  • Total Committers: 9
  • Avg Commits per committer: 80.667
  • Development Distribution Score (DDS): 0.362
Past Year
  • Commits: 65
  • Committers: 1
  • Avg Commits per committer: 65.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Keita Iwabuchi k****i@l****v 463
Keita Iwabuchi i****1@l****v 242
Karim Yasser Mohamed Yousry Youssef y****2@c****v 9
stoned-ape s****r@g****m 4
Alexander Bigerl b****l@m****e 2
Karim Yasser Mohamed Yousry Youssef y****2@c****v 2
Karim Yasser Mohamed Yousry Youssef y****2@c****v 2
Alfredo Correa c****a@l****v 1
Karim Yasser Mohamed Yousry Youssef y****2@c****v 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 21
  • Total pull requests: 148
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 1 day
  • Total issue authors: 7
  • Total pull request authors: 6
  • Average comments per issue: 3.24
  • Average comments per pull request: 0.13
  • Merged pull requests: 133
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 7
  • Pull requests: 19
  • Average time to close issues: 12 days
  • Average time to close pull requests: about 23 hours
  • Issue authors: 3
  • Pull request authors: 3
  • Average comments per issue: 4.86
  • Average comments per pull request: 0.16
  • Merged pull requests: 13
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • bigerl (8)
  • liss-h (5)
  • KIwabuchi (4)
  • Clueliss (3)
  • imranjavaid (1)
  • wrouesnel (1)
  • judicaelclair (1)
  • illegalplumbing (1)
Pull Request Authors
  • KIwabuchi (148)
  • Clueliss (5)
  • karimyoussef91 (5)
  • liss-h (5)
  • bigerl (1)
  • Thifhi (1)
  • stoned-ape (1)
Top Labels
Issue Labels
enhancement (2)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 13
  • Total maintainers: 3
spack.io: metall

A Persistent Memory Allocator For Data-Centric Analytics

  • Versions: 13
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Stargazers count: 21.8%
Forks count: 23.2%
Average: 25.6%
Dependent packages count: 57.3%
Last synced: 6 months ago

Dependencies

.github/workflows/ci-test.yml actions
  • actions/checkout v2 composite
.github/workflows/deploy-api-doc.yml actions
  • actions/checkout v2 composite
  • peaceiris/actions-gh-pages v3 composite