AggregationBuffer¶
Usage
use AggregationBuffer;
TODO: Experiment with expanding buffer sizes
- 
config const AggregatorMaxBuffers= -1¶
- 
config const AggregatorBufferSize= 64*1024¶
- 
config param AggregatorDebug= false¶
- 
proc UninitializedAggregator(type msgType)¶
- 
record Aggregator¶
- 
type msgType¶
 - 
var instance: unmanaged nilable AggregatorImpl(msgType)¶
 - 
var pid= -1¶
 - 
proc init(type msgType, aggregatorBufferSize: int = AggregatorBufferSize, aggregatorMaxBuffers: int = AggregatorMaxBuffers)¶
 - 
proc init(type msgType, instance: unmanaged nilable AggregatorImpl(msgType), pid: int)
 - 
proc init=(other)¶
 - 
proc destroy()¶
 - 
proc isInitialized()¶
 - 
proc _value¶
 
- 
type 
- 
class Buffer¶
- Buffer contains the aggregated data that the user aggregates. The buffer, if returned to the user, must be recycled back to the buffer pool by invoking ‘done’. - 
type msgType¶
 - 
proc readWriteThis(f)¶
 - 
proc done()¶
- Recycles self back to buffer pool. Using the buffer after invoking this method is subject to undefined behavior. 
 - 
proc this(idx: integral) ref¶
- Indexes into buffer. This will be remote if the buffer is. 
 - 
iter these(): msgType¶
- Iterates over buffer. The buffer is copied to current locale, so it will be local. 
 - 
iter these(param tag: iterKind): msgType
- Iterates over buffer in parallel. The buffer is copied to current locale so it will be local. 
 - 
iter these(param tag: iterKind): msgType
 - 
iter these(param tag: iterKind, followThis): msgType
 - 
proc getPtr()¶
 - 
proc getDomain()¶
 - 
proc getArray()¶
 - 
proc size¶
 - 
proc cap¶
 
- 
type 
- 
class AggregatorImpl¶
- 
type msgType¶
 - 
proc init(type msgType, aggregatorBufferSize: int, aggregatorMaxBuffers: int)¶
 - 
proc init(other, pid: int)
 - 
proc deinit()¶
 - 
proc dsiPrivatize(pid)¶
 - 
proc dsiGetPrivatizeData()¶
 - 
proc getPrivatizedInstance()¶
 - 
proc size()¶
 - 
proc sizeGlobal()¶
 - 
proc aggregate(msg: msgType, loc: locale): unmanaged nilable Buffer(msgType)¶
 - 
proc aggregate(msg: msgType, locid: int): unmanaged nilable Buffer(msgType)
 - 
iter flushGlobal(targetLocales = Locales): (unmanaged Buffer(msgType), locale)¶
 - 
iter flushGlobal(targetLocales = Locales, param tag: iterKind): (unmanaged Buffer(msgType), locale)
 - 
iter flushLocal(targetLocales = Locales): (unmanaged Buffer(msgType), locale)¶
 - 
iter flushLocal(targetLocales = Locales, param tag: iterKind): (unmanaged Buffer(msgType), locale)
 
- 
type