Programming Persistent Memory

A Comprehensive Guide for Developers

Read or Download


Step 1: Learn About Persistent Memory Uses

Explore how this technology can address challenges with use case memory.

Learn More

Step 2: Analyze Your Application

Use the Platform Profiler for Intel® VTune™ Profiler to learn how your application can benefit from large capacity persistent or volatile memory.

Try Platform Profiler

Free Download of Intel VTune Profiler

Step 3: Configure Your Platform

Provision Intel Optane DC persistent memory.

Get Started

Quick Start Guide

Provision Persistent Memory in Linux*

Step 4: Develop Software with the Persistent Memory Development Kit

Use this set of libraries and tools to begin developing persistent memory solutions.

Get Started

Get Started


Intel® VTune™ Profiler

This premier performance profiler has new capabilities to help you optimize your persistent memory programs.

Free Download

Platform Profiler

Analyze systems over longer intervals. Find out which workloads can benefit from larger memory allocations and which system configuration better fits the workloads.

Memory Access Profiling

Locate code that is sensitive to memory bandwidth and latency issues. Identify hot, warm, or cool data to optimize memory usage and placement.

I/O Profiling

Identify opportunities to replace disk or SSD-based storage with faster persistent memory.

Intel® Inspector—Persistence Inspector

This tool finds persistence errors quickly to make software fast and reliable. It checks that all caches only flush once to persistent memory and written in the correct order.

How to Detect Errors

Free Download


Persistent Memory Development Kit (PMDK)

This open source kit includes a set of libraries and tools to support software development for this new technology.

Boost Your C++ Applications with Persistent Memory

This code sample demonstrates using the C++ bindings of libpmemobj to convert a simplified version of grep, the Unix* command-line utility, to use persistent memory.

Implement a Fault-Tolerant Algorithm

This code sample uses libpmemobj C++ bindings to demonstrate how to implement fault tolerance in a PMEM version of the famous MapReduce algorithm.

Introduction to Persistent Collections for Java*

Learn how to instantiate, store, and fetch persistent data after a power cycle.

Create a Persistent Memory-Aware Queue

Make queue operations transactional to prevent persistent memory corruption. Core concepts are demonstrated in sample code.

Panaconda: A Persistent Memory Version of the Game Snake

This code sample demonstrates PMDK APIs for pools, pointers, and transactions, as well as shows you how to build and run the game.

PMAN: A Persistent Memory Version of the Game Pac-Man

The PMAN code sample highlights program design, persistent memory pools, pointers, and transactions. Like Panaconda, you can run the example.