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
Repository
Persistent memory allocator for data-centric analytics
Basic Info
Statistics
- Stars: 55
- Watchers: 9
- Forks: 14
- Open Issues: 3
- Releases: 33
Topics
Metadata Files
README.md
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.
Parallel Computing (journal)
arXiv (preprint)
About
Contact
GitHub Issues is open.
Primary contact: Keita Iwabuchi (LLNL).
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
- Website: https://software.llnl.gov
- Twitter: LLNL_OpenSource
- Repositories: 520
- Profile: https://github.com/LLNL
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
Top Committers
| Name | 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
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
- Homepage: https://github.com/LLNL/metall
- License: []
-
Latest release: 0.9
published almost 4 years ago
Rankings
Maintainers (3)
Dependencies
- actions/checkout v2 composite
- actions/checkout v2 composite
- peaceiris/actions-gh-pages v3 composite