21     return StatusCode::FAILURE;
 
   24   return StatusCode::SUCCESS;
 
   31   cl_int 
err = CL_SUCCESS;
 
   34   std::size_t slotIdx = 0;
 
   41                       << 
"), using the first one");
 
   51           "Could not create OpenCL kernel '" 
   53           << 
"', check that correct XCLBIN is programmed by AthXRT service");
 
   54       return StatusCode::FAILURE;
 
   58     slot.m_queue = std::make_unique<cl::CommandQueue>(
 
   59         *slot.m_context, slot.m_context->getInfo<CL_CONTEXT_DEVICES>()[0], 0,
 
   67     slot.m_dev_buf_in1 = std::make_unique<cl::Buffer>(
 
   68         *slot.m_context, CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR,
 
   69         size_in_bytes, 
nullptr, &
err);
 
   72     slot.m_dev_buf_in2 = std::make_unique<cl::Buffer>(
 
   73         *slot.m_context, CL_MEM_READ_ONLY | CL_MEM_ALLOC_HOST_PTR,
 
   74         size_in_bytes, 
nullptr, &
err);
 
   77     slot.m_dev_buf_out = std::make_unique<cl::Buffer>(
 
   78         *slot.m_context, CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR,
 
   79         size_in_bytes, 
nullptr, &
err);
 
   82     slot.m_host_buf_in1 = (
uint32_t*)slot.m_queue->enqueueMapBuffer(
 
   83         *slot.m_dev_buf_in1, CL_TRUE, CL_MAP_WRITE, 0, size_in_bytes, 
nullptr,
 
   87     slot.m_host_buf_in2 = (
uint32_t*)slot.m_queue->enqueueMapBuffer(
 
   88         *slot.m_dev_buf_in2, CL_TRUE, CL_MAP_WRITE, 0, size_in_bytes, 
nullptr,
 
   92     slot.m_host_buf_out = (
uint32_t*)slot.m_queue->enqueueMapBuffer(
 
   93         *slot.m_dev_buf_out, CL_TRUE, CL_MAP_READ, 0, size_in_bytes, 
nullptr,
 
  110   return StatusCode::SUCCESS;
 
  115   ATH_MSG_INFO(
"stop_worker(): Cleaning OCL environment");
 
  118     ATH_CHECK(slot.m_queue->enqueueUnmapMemObject(
 
  119                   *slot.m_dev_buf_in1, slot.m_host_buf_in1) == CL_SUCCESS);
 
  120     ATH_CHECK(slot.m_queue->enqueueUnmapMemObject(
 
  121                   *slot.m_dev_buf_in2, slot.m_host_buf_in2) == CL_SUCCESS);
 
  122     ATH_CHECK(slot.m_queue->enqueueUnmapMemObject(
 
  123                   *slot.m_dev_buf_out, slot.m_host_buf_out) == CL_SUCCESS);
 
  124     ATH_CHECK(slot.m_queue->finish() == CL_SUCCESS);
 
  127   return StatusCode::SUCCESS;
 
  145                                                    nullptr) == CL_SUCCESS);
 
  154   std::vector<cl::Memory> mems_out_vector = {*slot.
m_dev_buf_out};
 
  156                 mems_out_vector, CL_MIGRATE_MEM_OBJECT_HOST, 
nullptr,
 
  157                 nullptr) == CL_SUCCESS);
 
  166                     << 
i << 
": CPU result = " << cpu_result
 
  173     ATH_MSG_INFO(
"OpenCL vector multiplication test PASSED!");
 
  176     return StatusCode::FAILURE;
 
  179   return StatusCode::SUCCESS;