Changes between Version 4 and Version 5 of docs_architecture


Ignore:
Timestamp:
Apr 15, 2011, 12:20:42 PM (15 years ago)
Author:
Matthias Vogelgesang
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • docs_architecture

    v4 v5  
    3333== Design ==
    3434
    35 The most basic abstractions are
     35The basic abstractions are
    3636
    37 * Filters that act on data and
     37* Elements that get aggregated to a nested graph structure,
     38* Sequences and Splits defining how child elements are ordered,
     39* Filters in leaf Elements that act on data and
    3840* Buffers representing data with all its associated meta data.
    3941
    40 A ''Buffer'' hides all details about memory management (be it CPU host memory or GPU memory) and provides a common interface for querying meta data and a pointer to the raw data. The meta data must include
     42Furthermore a Resource Manager creates and distributes resources such as Buffers, OpenCL memory and kernel objects, etc.
    4143
    42 * number of dimensions,
    43 * length of each dimension,
    44 * a flag if a valid GPU representation is available.
     44A Buffer is bound to an OpenCL device and returns its data either as a simple float pointer or an OpenCL memory object. A source Filter (which has no input but generates an output stream of data) requests a Buffer object from the Resource Manager, fills the data and pushes it to its output queue. The next Filter pops this Buffer uses the data and pushes it again until the last Filter releases the Buffer object to the Resource Manager for further recycling.
    4545
    46 and could include meta data like
     46Container elements such as Sequences and Splits also take the buffer from their input queue but distribute it according to their semantics:
     47* A Sequence just pushes the data to the first child filter
     48* A Split pushes the data according to its mode of operation, specifically it could
     49  * push the data in round-robin fashion,
     50  * push the data randomly to its children or
     51  * copy the input and distribute these copies.
    4752
    48 * what kind of special image type (sinograms, images in frequency domain etc.) it is,
    49 * mutex(es) for shared access of threads,
    50 * alignment and
    51 * associated file name and type.
     53The following image sketches the components and a simple configuration:
    5254
    53 Such meta-data depends on the actual filter and is added to the filter object as a GObject property rather than a simple field.
    54 
    55 It is assumed, that the base data type for each pixel is 32-bit single-precision floating point, which means that source data must be converted and scaled to the range [0.0,1.0].
    56 
    57 An ubiquitous scheduler sets up the threading system and connected hardware accelerators like GPUs. As this is the only instance that knows where Filters can run, it should decide if a Filter should run on the GPU by inspecting the chain of computation. Furthermore, if a Filter does not need to work on a whole buffer (that means data is separable), the scheduler might also split the Filter by creating two or more instances and provide them with split data.
    5855
    5956