Changes between Version 4 and Version 5 of docs_architecture
- Timestamp:
- Apr 15, 2011, 12:20:42 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
docs_architecture
v4 v5 33 33 == Design == 34 34 35 The mostbasic abstractions are35 The basic abstractions are 36 36 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 38 40 * Buffers representing data with all its associated meta data. 39 41 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 42 Furthermore a Resource Manager creates and distributes resources such as Buffers, OpenCL memory and kernel objects, etc. 41 43 42 * number of dimensions, 43 * length of each dimension, 44 * a flag if a valid GPU representation is available. 44 A 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. 45 45 46 and could include meta data like 46 Container 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. 47 52 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. 53 The following image sketches the components and a simple configuration: 52 54 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.58 55 59 56
![(please configure the [header_logo] section in trac.ini)](/ufo/chrome/site/your_project_logo.png)