JASPL  0.2
Just Another Signal Processing Library
taskitem.h
1 #ifndef TASKITEM_H
2 #define TASKITEM_H
3 
4 //Header for this file
5 //
6 //C System-Headers
7 #include <cxxabi.h> //abi::__cxa_demangle
8 //C++ System headers
9 #include <typeinfo> //typeid(T).name()
10 //OpenCL Headers
11 #include <CL/cl.h>
12 #include <CL/cl.hpp>
13 //Boost Headers
14 #include <boost/algorithm/string.hpp> //boost::replace_all
15 //OpenMP Headers
16 #include<omp.h>
17 //Project specific headers
18 #include "../JASPL/OpenCLBase/openclbase.h"
19 #include "../JASPL/jVector/jvector.h"
20 #include "../JASPL/jTypeTraits/jtypetraits.h"
21 
22 namespace jaspl {
23 
24 namespace ocl {
25 
26 class TaskItem : public OpenCLBase {
27 
28  friend class TaskQueueBase;
29 
30  public:
31  virtual ~TaskItem() {}
32 
33  protected:
34  template <typename F> std::string FakeKernelTemplating( std::string kernel_source );
35  template <typename F> void LoadCLKernel( std::string kernel_name, std::string kernel_src );
36 
37  virtual void Trigger();
38  virtual void SetSignal( cl::Buffer& signal_buff , uint sig_size );
39  virtual cl::Buffer& ProcessedSignal() = 0;
40  virtual size_t ProcessedSignalBytes() = 0;
41  virtual size_t ProcessedSignalSize() = 0;
42  virtual bool NeedsToReknew() = 0;
43 
44  void CheckKernelPath( std::string kernel_source_path );
45  std::string GetOpenCLSource(std::string kernel_path );
46 
47  std::string kernel_path;
48  cl::Program::Sources sources;
49  std::string kernel_source;
50  cl::Program program;
51  cl::Kernel kernel;
52 
53  size_t signal_size;
54 
55  private:
56  std::string FastRead( std::string file_name );
57 
58 };
59 
60 #include <TaskItem/taskitem_templates.tpp>
61 
62 }
63 
64 }
65 
66 #endif // TASKITEM_H
The fundamental structure underlying all OpenCL Functions.
Definition: taskqueuebase.h:30
Base class for every class that needs access to OpenCL Platforms, Contexts or Devices.
Definition: openclbase.h:31