Changes between Version 1 and Version 2 of PabloLanguage


Ignore:
Timestamp:
Dec 1, 2012, 10:16:15 AM (6 years ago)
Author:
cameron
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PabloLanguage

    v1 v2  
    11= Pablo: A Language and Compiler for Parallel Bit Stream Programming =
     2
     3Pablo is a Python subset language that allows you to prototype parallel bit
     4stream programs in Python based on the concept of unbounded (arbitrary-length) bit streams.
     5Our Pablo compiler can then be used to translate Pablo programs to efficient
     6block-at-a-time C++ code.  The compiler supports the following features.
    27
    38== Bitwise Logic ==
     
    712
    813== Scanning Operations ==
     14
     15These are the operations used for parallel scanning and parsing as documented
     16in the EuroPar 2011 paper: Parallel Scanning with Bitstream Addition.
    917
    1018 * {{{pablo.ScanThru(m, c)}}}
     
    3341Pablo may use error assertions to optimize; that is, the compiler may optimize assuming that the all bits in the asserted error stream are indeed 0.
    3442
     43== Parallel If Optimizations ==
    3544
     45The statement {{{if E: S}}}, where {{{E}}} is a bit stream expresion and {{{S}}} is a block of Pablo
     46statements is a parallel if construct.  It is semantically equivalent to {{{S}}} alone, but omits
     47computation of {{{S}}} whenever the entire stream {{{E}}}
     48is known to be zero.
     49
     50The parallel if optimization is highly useful in block-at-a-time code, because the optimization is
     51performed block-at-a-time: for any block in which {{{E}}} is known to be 0 at all bit positions
     52in the block (and there are no incoming carries for operations within the block), the execution
     53of {{{S}}} is omitted for the block.
     54
     55== While Loops ==
     56
     57Pablo supports the concept of iteration over bit streams using while loops of the form {{{while E: S}}}, where {{{E}}} is a bit stream expresion and {{{S}}} is a block of Pablo
     58statements.  The loop body {{{S}}} is repeatedly executed while any 1 bits remain in the stream {{{E}}}.
     59In compilation to block-by-block processing, the iteration terminates for that block as soon as {{{E}}} becomes zero.
     60At present, the semantics of while loops are restricted as follows: a one bit can only appear
     61at any given position within a stream at most once.   Programs that violate this constraint
     62will produce undefined results.