JASPL  0.2
Just Another Signal Processing Library
taskqueuebase.cpp
1 //C System-Headers
2 //
3 //C++ System headers
4 #include <algorithm>
5 //OpenCL Headers
6 //
7 //Boost Headers
8 //
9 //Qt Headers
10 //
11 //Project specific headers
12 #include "TaskQueue/taskqueuebase.h"
13 
14 namespace jaspl {
15 
16 namespace ocl {
17 
18 TaskQueueBase::TaskQueueBase(uint platform_number, uint device_number) : OpenCLBase( platform_number, device_number ) {}
19 
20 TaskQueueBase::~TaskQueueBase() {}
21 
23 
24  for( auto& task : task_queue ) {
25  task->SetSignal( signal_input, signal_size);
26  task->Trigger();
27 
28  if ( task->NeedsToReknew() ) {
29  ReknewSignal( task->ProcessedSignal(),\
30  task->ProcessedSignalBytes(),\
31  task->ProcessedSignalSize() );
32  }
33 
34  //Wait for commands to finish before iterating, since
35  //signal may have been updated
36  command_queue.finish();
37  }
38 
39 // command_queue.finish();
40 }
41 
43  task_queue.push_back( &item );
44 }
45 
47 
48  if( std::find(task_queue.begin(), task_queue.end(), &item) != task_queue.end() ) {
49  task_queue.erase(std::remove(task_queue.begin(), task_queue.end(), &item), task_queue.end());
50  return true;
51  } else {
52  return false;
53 
54  }
55 
56 }
57 
59 
60  for( const auto& task : task_queue ) {
61  std::cout << get_type_name( task ) << std::endl;
62  }
63 
64 }
65 
66 void TaskQueueBase::ReknewSignal(cl::Buffer& processed_buff, size_t processed_bytes, size_t processed_size ) {
67 
68  cl_int* err_ptr = NULL;
69  signal_input = cl::Buffer ( context, CL_MEM_READ_WRITE, processed_bytes, err_ptr );
70  OCL_DEBUG( err_ptr );
71 
72  cl_int err = command_queue.enqueueCopyBuffer( processed_buff, signal_input, 0, 0, processed_bytes );
73  OCL_DEBUG( err );
74 
75  signal_bytes = processed_bytes;
76  signal_size = processed_size;
77 
78 }
79 
80 }
81 
82 }
void PrintContents()
Print all of the current elements in the queue in the order in which they will be executed...
void Execute()
Run all TaskItems that are currently loaded.
void AddTaskItem(TaskItem &item)
Add a new TaskItem into the TaskQueue.
bool RemoveTaskItem(TaskItem &item)
Remove a TaskItem from the queue (if it exists)
Base class for every class that needs access to OpenCL Platforms, Contexts or Devices.
Definition: openclbase.h:31
TaskQueueBase(uint platform_number=0, uint device_number=0)
Build a new TaskQueueBase and implicitly initialize OpenCL Context, Platform etc. ...