Hierarchical Memory Management for Mutable State

01/14/2018
by   Adrien Guatto, et al.
0

It is well known that modern functional programming languages are naturally amenable to parallel programming. Achieving efficient parallelism using functional languages, however, remains difficult. Perhaps the most important reason for this is their lack of support for efficient in-place updates, i.e., mutation, which is important for the implementation of both parallel algorithms and the run-time system services (e.g., schedulers and synchronization primitives) used to execute them. In this paper, we propose techniques for efficient mutation in parallel functional languages. To this end, we couple the memory manager with the thread scheduler to make reading and updating data allocated by nested threads efficient. We describe the key algorithms behind our technique, implement them in the MLton Standard ML compiler, and present an empirical evaluation. Our experiments show that the approach performs well, significantly improving efficiency over existing functional language implementations.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/21/2022

UPIR: Toward the Design of Unified Parallel Intermediate Representation for Parallel Programming Models

The complexity of heterogeneous computing architectures, as well as the ...
research
06/29/2018

Josephine: Using JavaScript to safely manage the lifetimes of Rust data

This paper is about the interface between languages which use a garbage ...
research
01/16/2023

Shared memory parallelism in Modern C++ and HPX

Parallel programming remains a daunting challenge, from the struggle to ...
research
08/15/2019

Counting Immutable Beans: Reference Counting Optimized for Purely Functional Programming

Most functional languages rely on some garbage collection for automatic ...
research
02/22/2019

Optimizing Space of Parallel Processes

This paper is a contribution to exploring and analyzing space-improvemen...
research
12/04/2009

Deterministic Consistency: A Programming Model for Shared Memory Parallelism

The difficulty of developing reliable parallel software is generating in...
research
07/13/2023

Typed Design Patterns for the Functional Era

This paper explores how design patterns could be revisited in the era of...

Please sign up or login with your details

Forgot password? Click here to reset