Ignore:
Timestamp:
May 27, 2017, 10:36:18 AM (2 years ago)
Author:
cameron
Message:

Multiblock kernels use whole block copy to/from temp buffers; allow input stream sets with variable rates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/kernels/kernel.h

    r5464 r5479  
    299299    known as the principal input stream set.
    300300
    301 #.  If there is more than one input stream set, the additional stream sets must
     301#.  If there is more than one input stream set, the additional stream sets
     302    are first classified as having either a derived processing rate or
     303    a variable processing rate.   Stream sets with a derived processing rate
    302304    have a processing rate defined with respect to the input stream set of one
    303305    of the following types:  FixedRate, Add1 or RoundUp.    Note that stream sets
    304306    declared without a processing rate attribute have the FixedRate(1) attribute
    305     by default and therefore satisfy this constraint.
     307    by default and therefore satisfy this constraint.  All other processing rate
     308    types are classified as variable rate.
    306309
    307310#.  All output stream sets must be declared with processing rate attributes
     
    317320#.  The doMultiBlockMethod will be called with the following parameters:
    318321    * the number of items of the principal input stream to process (itemsToDo),
     322    * additional items available parameters for each additional input stream set
     323      that is classified as a variable rate stream set
    319324    * pointers to linear contiguous buffer areas for each of the input stream sets, and
    320325    * pointers to linear contiguous output buffer areas for each of the output stream sets.
    321     * pointers are to the address of the first item of the first stream of the stream set.
     326 
     327    Notes:
     328    * if the kernel has a Lookahead dependency declared on any input stream set, then
     329      there will be two buffer pointers for that stream set, one for accessing stream set
     330      items without lookahead and one for accessing the items with lookahead.   
     331    * pointers are to the address of the first unprocessed item of the first stream
     332      of the stream set.
     333    * the base type of each pointer is the StreamSetBlockType of that streamset
    322334
    323335#.  The Multi-Block Kernel Builder will arrange that these input parameters may be
     
    325337    * the number of itemsToDo will either be an exact multiple of the BlockSize,
    326338      or, for processing the final block, a value less than BlockSize
    327     * all input buffers will be safe to access and have data available in
     339    * the input buffer of the principal stream set and all input buffers of stream sets
     340      with derived processing rates will be safe to access and have data available in
    328341      accord with their processing rates based on the given number of itemsToDo
    329342      of the principal input stream set; no further bounds checking is needed.
     343    * the kernel programmer is responsible for safe access and bounds checking for any
     344      input stream set classified as variable rate.
    330345    * all output buffers will be safe to access and have space available
    331346      for the given maximum output generation rates based on the given number
Note: See TracChangeset for help on using the changeset viewer.