Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
aml
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
27
Issues
27
List
Boards
Labels
Milestones
Merge Requests
6
Merge Requests
6
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
argo
aml
Commits
d76457f8
Commit
d76457f8
authored
Mar 20, 2018
by
Swann Perarnau
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[doc] small readme that actual match the code
Things have changed. Reflect the new code.
parent
15cd651b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
12 deletions
+33
-12
README.markdown
README.markdown
+33
-12
No files found.
README.markdown
View file @
d76457f8
A
rgonne's Memory Library
========================
A
ML: Building Blocks for Memory Management
========================
=================
This is a prototype library to manage the hierarchical memory present in recent
and future HPC systems, including NVM and stacked memory.
AML is a library to manage byte-addressable memory devices. The library
is designed as a collection of building blocks, so that users can create custom
memory management policies for allocation and placement of data across devices.
This library defines "memory nodes" as hardware locations where data can
reside. Not all of those memory nodes can provide virtual memory access to the
data they contain, and as such, allocations are identified only by a UID.
Memory nodes are defined by a public data structure that also contains
information on the granularity of data accesses to a node.
This library is still in the prototyping phase. APIs might break often.
The library then provides functions to "pull" data into a virtual memory
location. That memory location should be seen as temporary: the user should ask
the library to "push" out the data afterwards.
# General Architecture
The architecture of the library relies on two principles: type-specific
initialization functions, and generic interfaces to each building block.
The type-specific initialization functions include:
-
`_DECL`
macros to declare a typed building block on the stack.
-
`_create_`
functions to allocate a building block and return its pointer.
-
`_init_`
functions to initialize stack-allocated building blocks.
Generic interfaces all take a pointer to a building block.
# Low-Level Building Blocks
Low-level building blocks provide the basic mechanisms required to implement
any high-level memory management policy. This include:
-
*arenas:*
allocation policies inside a memory region
-
*areas:*
actual memory reservation on devices
-
*bindings:*
mapping pages/tiles of memory unto multiple devices
-
*tilings:*
chunking data
# High-Level Building Blocks
High-level building blocks use the low-level ones to provide fancier memory
management facilities, including:
-
*dmas:*
moving data across areas
-
*scratchpads:*
using an area as an explicitly managed cache of another one
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment