  Data analytics applications transform raw input data into analytics-specific
data structures before performing analytics. Unfortunately, such data ingestion
step is often more expensive than analytics. In addition, various types of
NVRAM devices are already used in many HPC systems today. Such devices will be
useful for storing and reusing data structures beyond a single process life
cycle.
  We developed Metall, 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.
Metall incorporates a concise and high-performance memory management algorithm
inspired by Supermalloc and the rich C++ interface developed by
Boost.Interprocess library.
  On a dynamic graph construction workload, Metall achieved up to 11.7x and
48.3x performance improvements over Boost.Interprocess and memkind (PMEM kind),
respectively. We also demonstrate Metall's high adaptability by integrating
Metall into a graph processing framework, GraphBLAS Template Library. This
study's outcomes indicate that Metall will be a strong tool for accelerating
future large-scale data analytics by allowing applications to leverage
persistent memory efficiently.
