1 #include "TaskItem/taskitem.h" 9 std::string TaskItem::FastRead( std::string file_name ) {
11 std::ifstream file_stream( file_name.c_str() );
12 std::stringstream buffer;
13 buffer << file_stream.rdbuf();
19 void TaskItem::CheckKernelPath( std::string kernel_source_path ) {
21 std::ifstream test_stream( kernel_source_path.c_str() );
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 );
33 std::string TaskItem::GetOpenCLSource( std::string kernel_path ) {
35 CheckKernelPath( kernel_path );
37 std::string kernel_str = FastRead( kernel_path );
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 );
49 void TaskItem::Trigger() {
52 err = command_queue.enqueueNDRangeKernel( kernel,cl::NullRange, cl::NDRange( signal_size ) );
54 std::cout << __func__ <<
" (TaskItem) OpenCL Status: " << CLErrorToString( err ) << std::endl;
57 void TaskItem::SetSignal( cl::Buffer& signal_buff, uint sig_size ) {
59 signal_size = sig_size;
62 err = kernel.setArg( 0, signal_buff );