-
Notifications
You must be signed in to change notification settings - Fork 226
PMacc data types [Buffer]
You are here: Home > Developer Documentation
This page give an overview of the most impotent data types in PMacc.
Buffer = is a container that point or holds memory
- Buffers are located in
libPMacc/include/memory/buffers - Buffers can be container of real memory those are located on an accelerator/host or container those were a combination real memory buffers.
In the most cases this buffer types are a combination of [memory location]Buffer (the interface), Buffer (generic interface) and [memory location]BufferIntern (implementation).
-
DeviceBuffer/ DeviceBufferIntern- contains device memory
- memory is set to zero on initialization
- line by line aligned (if multi dimensional)
- number of elements (current size) is available on device (optional)
- can point to existing device memory (optional)
-
HostBuffer/ HostBufferIntern- contains host memory
- memory is set to zero on initialization
- also multi dimensional memory is not aligned
-
Exchange/ExchangeIntern- buffer for communicate guarding cells (ghost cells)
- contains host buffer
- point to a subset of existing device buffer (host and device size are the same)
- linear device double buffer of subset were the device buffer points to (only existing on multi dimensional exchanges) [ used to speed up memory copies from host2device and device2host ]
-
MappedBuffer- contains host buffer those can directly accessed from device
- memory is set to zero on initialization
- same interface like
DeviceBuffer - not aligned
-
GridBuffer- complex buffer those contains
DeviceBuffer,HostBuffer -
ExchangeBuffercan be added at runtime for every side of the memory (1D -- <=2 exchanges, 2D -- <= 8 exchanges, 3D -- <=26 exchanges) - contains methods for asynchronous communication of the exchanges
- complex buffer those contains
-
MultiGridBuffer- create multiple
GridBufferof the same native data type and size in one big memory chunk - every
GridBuffercan accessed by a enum - exchanges can be set separate for on
GridBufferor for all - the used iterator
MultiBoxhas a small memory footprint in contrast to multipleGridBuffers
- create multiple
All wiki entries describe the dev branch. Features may be different in the current master branch.
Before you start please read our README!
PIConGPU is a scientific project. If you present and/or publish scientific results that used PIConGPU, you should set a reference to show your support. Our according up-to-date publication at the time of your publication should be inquired from:
The documentation in this wiki is still not complete and we need your help keeping it up to date. Feel free to help improving this wiki!