Accelerated Computation Engine
ace_analytic_openclrun.h
1 #ifndef ACE_ANALYTIC_OPENCLRUN_H
2 #define ACE_ANALYTIC_OPENCLRUN_H
3 #include <memory>
4 #include <QVector>
5 #include <QQueue>
6 #include "ace_analytic_abstractrun.h"
7 #include "ace_analytic.h"
8 #include "opencl.h"
9 #include "eabstractanalytic.h"
10 //
11 
12 
13 
14 namespace Ace
15 {
16  namespace Analytic
17  {
25  class OpenCLRun : public AbstractRun
26  {
27  Q_OBJECT
28  public:
29  virtual void addWork(std::unique_ptr<EAbstractAnalytic::Block>&& block) override final;
30  public:
31  explicit OpenCLRun(EAbstractAnalytic::OpenCL* opencl, OpenCL::Device* device, AbstractInput* base, QObject* parent = nullptr);
32  virtual ~OpenCLRun() override final;
33  private slots:
34  void blockFinished(int index);
35  private:
36  class Thread;
37  private:
41  OpenCL::Context* _context;
50  AbstractInput* _base;
55  QVector<Thread*> _threads;
59  QQueue<Thread*> _idle;
60  };
61  }
62 }
63 
64 
65 
66 #endif
Definition: ace_analytic_openclrun.h:25
Definition: ace.h:6
Definition: opencl_context.h:18
OpenCLRun(EAbstractAnalytic::OpenCL *opencl, OpenCL::Device *device, AbstractInput *base, QObject *parent=nullptr)
Definition: ace_analytic_openclrun.cpp:65
Definition: ace_analytic_abstractinput.h:24
virtual void addWork(std::unique_ptr< EAbstractAnalytic::Block > &&block) override final
Definition: ace_analytic_openclrun.cpp:31
Definition: eabstractanalytic_opencl.h:16
Definition: opencl_device.h:19
Definition: ace_analytic_abstractrun.h:20
virtual ~OpenCLRun() override final
Definition: ace_analytic_openclrun.cpp:107
Definition: ace_analytic_openclrun_thread.h:21