Exemple #1
0
void issue_command::prepare_kernel(shared_ptr_class<kernel> kern) {
  DSELF() << kern->src.kernel_name;
  auto k = kern->get();
  ::cl_int error_code;
  int i = 0;
  for (auto& acc : kern->src.resources) {
    if (acc.second.acc.target == access::target::local) {
      error_code = clSetKernelArg(k, i, acc.second.size, nullptr);
    } else {
      auto mem = acc.second.acc.data->device_data.get();
      error_code = clSetKernelArg(k, i, acc.second.size, &mem);
    }
    detail::error::report(error_code);
    ++i;
  }
}
Exemple #2
0
  /** Create a new buffer with associated memory, using the data in
      host_data

      The ownership of the host_data is shared between the runtime and the
      user. In order to enable both the user application and the SYCL
      runtime to use the same pointer, a cl::sycl::mutex_class is
      used.
  */
  buffer(shared_ptr_class<T> &host_data,
         const range<Dimensions> &r)
    : buffer_base { false },
    access { host_data.get(), r },
    shared_data { }
    {}
Exemple #3
0
void issue_command::enqueue_task_command(
    queue* q, const vector_class<cl_event>& wait_events,
    shared_ptr_class<kernel> kern, event* evnt) {
  prepare_kernel(kern);
  kern->enqueue_task(q, wait_events, evnt);
}