JASPL  0.2
Just Another Signal Processing Library
taskitem.cpp
1 #include "TaskItem/taskitem.h"
2 
3 namespace jaspl {
4 
5 namespace ocl {
6 
7 //TaskItem::TaskItem( uint device_number ) : OpenCLBase( device_number ) {}
8 
9 std::string TaskItem::FastRead( std::string file_name ) {
10 
11  std::ifstream file_stream( file_name.c_str() );
12  std::stringstream buffer;
13  buffer << file_stream.rdbuf();
14  file_stream.close();
15 
16  return buffer.str();
17 }
18 
19 void TaskItem::CheckKernelPath( std::string kernel_source_path ) {
20 
21  std::ifstream test_stream( kernel_source_path.c_str() );
22 
23  if ( !test_stream.good() ) {
24  std::string err_str = __func__;
25  err_str += "\nCould not locate OpenCL kernel source file :";
26  err_str += kernel_source_path;
27  throw std::ios_base::failure( err_str );
28  } else {
29  test_stream.close();
30  }
31 }
32 
33 std::string TaskItem::GetOpenCLSource( std::string kernel_path ) {
34 
35  CheckKernelPath( kernel_path );
36 
37  std::string kernel_str = FastRead( kernel_path );
38 
39  if( kernel_str.empty() ) {
40  std::string err_str = __func__;
41  err_str += "\nCould not load OpenCL Kernel :";
42  err_str += kernel_path;
43  throw std::runtime_error( err_str );
44  } else {
45  return kernel_str;
46  }
47 }
48 
49 void TaskItem::Trigger() {
50 
51  cl_int err;
52  err = command_queue.enqueueNDRangeKernel( kernel,cl::NullRange, cl::NDRange( signal_size ) );
53 
54  std::cout << __func__ << " (TaskItem) OpenCL Status: " << CLErrorToString( err ) << std::endl;
55 }
56 
57 void TaskItem::SetSignal( cl::Buffer& signal_buff, uint sig_size ) {
58 
59  signal_size = sig_size;
60 
61  cl_int err;
62  err = kernel.setArg( 0, signal_buff );
63  OCL_DEBUG( err );
64 
65 }
66 
67 }
68 
69 }