VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vtkThreadedStreamingPipeline.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkThreadedStreamingPipeline.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14  =========================================================================*/
15 /*-------------------------------------------------------------------------
16  Copyright (c) 2008, 2009 by SCI Institute, University of Utah.
17 
18  This is part of the Parallel Dataflow System originally developed by
19  Huy T. Vo and Claudio T. Silva. For more information, see:
20 
21  "Parallel Dataflow Scheme for Streaming (Un)Structured Data" by Huy
22  T. Vo, Daniel K. Osmari, Brian Summa, Joao L.D. Comba, Valerio
23  Pascucci and Claudio T. Silva, SCI Institute, University of Utah,
24  Technical Report #UUSCI-2009-004, 2009.
25 
26  "Multi-Threaded Streaming Pipeline For VTK" by Huy T. Vo and Claudio
27  T. Silva, SCI Institute, University of Utah, Technical Report
28  #UUSCI-2009-005, 2009.
29  -------------------------------------------------------------------------*/
43 #ifndef __vtkThreadedStreamingPipeline_h
44 #define __vtkThreadedStreamingPipeline_h
45 
46 #include "vtkCommonExecutionModelModule.h" // For export macro
48 
52 
53 class VTKCOMMONEXECUTIONMODEL_EXPORT vtkThreadedStreamingPipeline : public vtkCompositeDataPipeline
54 {
55 public:
58  void PrintSelf(ostream &os, vtkIndent indent);
59 
61  static vtkInformationIntegerKey* AUTO_PROPAGATE();
62 
64  static vtkInformationObjectBaseKey* EXTRA_INFORMATION();
65 
66 //BTX
68 
70  enum
71  {
72  PROCESSING_UNIT_NONE = 0,
73  PROCESSING_UNIT_CPU = 1,
74  PROCESSING_UNIT_GPU = 2
75  };
76 //ETX
78 
80  static void SetMultiThreadedEnabled(bool enabled);
81 
83  static void SetAutoPropagatePush(bool enabled);
84 
87  static void Pull(vtkExecutiveCollection *execs);
88 
91  static void Pull(vtkExecutiveCollection *execs, vtkInformation *info);
92 
95  static void Push(vtkExecutiveCollection *execs);
96 
99  static void Push(vtkExecutiveCollection *execs, vtkInformation *info);
100 
103  static void Pull(vtkExecutive *exec);
104 
107  static void Pull(vtkExecutive *exec, vtkInformation *info);
108 
111  static void Push(vtkExecutive *exec);
112 
115  static void Push(vtkExecutive *exec, vtkInformation *info);
116 
118  void Pull();
119 
121  void Pull(vtkInformation *info);
122 
124  void Push();
125 
127  void Push(vtkInformation *info);
128 
130  void ReleaseInputs();
131 
133 
135  virtual int ProcessRequest(vtkInformation* request,
136  vtkInformationVector** inInfo,
137  vtkInformationVector* outInfo);
139 
141  int ForceUpdateData(int processingUnit, vtkInformation *info);
142 
144  void UpdateRequestDataTimeFromSource();
145 
147  vtkComputingResources *GetResources();
148 
151  vtkInformation *ForceDataRequest;
154 
155 protected:
158 
159  virtual int ForwardUpstream(vtkInformation* request);
160  virtual int ForwardUpstream(int i, int j, vtkInformation* request);
161 
162 private:
164  void operator=(const vtkThreadedStreamingPipeline&); // Not implemented.
165 };
166 
167 #endif
Executive supporting multi-threads.
static vtkCompositeDataPipeline * New()
Scheduling execution with thread/computing resources distributing.
Superclass for all pipeline executives in VTK.
Definition: vtkExecutive.h:48
void PrintSelf(ostream &os, vtkIndent indent)
Definition of computing resource (threads/kernels)
virtual int ProcessRequest(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo)
Executive supporting composite datasets.
virtual int ForwardUpstream(vtkInformation *request)
maintain a list of executive objects