AML areas represent places where data can be read and write.
Typically an area is an object from which you can query and free memory.
AML lends these actions mmap() and munmap() after linux system call to
AML areas represent places where data can be read and written.
Typically, an area is an object from which you can query and free memory.
AML lends these actions mmap() and munmap() after Linux system calls to
map physical memory in the virtual address space.
On NUMA processor, mapping of data can be as complex as interleaving chunks
on several physical memories and making them appear as contiguous is user land.
On a NUMA processor, mapping of data can be as complex as interleaving chunks
of several physical memories and making them appear as contiguous in user land.
On accelerator, physical memory of the device can be mapped with virtual
address range that is mapped on the host physical memory.
AML builds areas on top of libnuma and cuda to reach these levels of
AML builds areas on top of libnuma and CUDA to reach these levels of
customization while keeping the memory queries/free as simple as a function call.
As compute nodes get bigger, building relevant areas to manage locality
is likely to improve performance of memory-bound applications.
AML areas provide functions to query memory from specific places materialized as
areas. Available area implementations dictate the way such
places can be arranged and their properties. AML areas is a
places can be arranged and determine their properties. AML area is a
low-level/high-overhead abstraction and is not intended to be optimized for
fragmented small allocations. Instead it intends to be a basic block for
fragmented, small allocations. Instead, it is intended to be a basic block for
implementing better allocators.
The API of AML Area is broke down into two levels.
The API of AML Area is broken down into two levels.
- The `high-level API <../../pages/areas.html>`_ provides generic functions that can be applied on all areas. It also describes the general structure of an area for implementers.
- Implementations specific methods, constructors and static areas declarations stand in the second level of headers `<aml/area/\*.h> <https://xgitlab.cels.anl.gov/argo/aml/tree/master/include/aml/area>`_.
- The `high-level API <../../pages/areas.html>`_ provides generic functions that can be applied to all areas. It also describes the general structure of an area for implementers.
- Implementation-specific methods, constructors, and static area declarations reside in the second level of headers `<aml/area/\*.h> <https://xgitlab.cels.anl.gov/argo/aml/tree/master/include/aml/area>`_.
In computer science, DMA (Direct Memory Access) is an hardwareaccelerated
In computer science, DMA (Direct Memory Access) is a hardware-accelerated
method for moving data across memory regions without the intervention of a
compute unit.
...
...
@@ -13,41 +13,42 @@ generally moved between two `areas <../../pages/areas.html>`_,
between two virtual memory ranges represented by a pointer.
Data is moved from one `layout <../../pages/layout.html>`_ to another.
When performing a dma, layout coordinates are walked element by element in
post-order and matched to translate source coordinates into destination
When performing a DMA operation, layout coordinates are walked element by
element in
post order and matched to translate source coordinates into destination
coordinates.
Depending on the dma implementation, this operation can be
optimized or offloaded to a dma accelerator.
Data can thus be moved asynchronously by the DMA engine, e.g pthreads on a CPU
and cuda streams on cuda accelerators.
Depending on the DMA implementation, this operation can be
optimized or offloaded to a DMA accelerator.
Data can thus be moved asynchronously by the DMA engine, e.g., pthreads on a CPU
and CUDA streams on CUDA accelerators.
The API for using AML DMA is broke down into two levels.
- The `high-level API <../../pages/dmas.html>`_ provides generic functions that
can be applied on all DMAs. It also describes the general structure of a DMA
for implementers.
- Implementations specific methods, constructors and static DMAs declarations
stand in the second level of headers `<aml/dma/\*.h> <https://xgitlab.cels.anl.gov/argo/aml/tree/master/include/aml/dma>`_.
The API for using AML DMA is broken down into two levels.
- The `high-level API <../../pages/dmas.html>`_ provides generic functions that can be applied on all DMAs. It also describes the general structure of a DMA for implementers.
- Implementation-specific methods, constructors, and static DMAs declarations reside in the second level of headers `<aml/dma/\*.h> <https://xgitlab.cels.anl.gov/argo/aml/tree/master/include/aml/dma>`_.