Пример #1
0
 void add_arguments_to_kernel_rec(evnt_vec& events, args_vec& arguments, 
                                  T0& arg0, Ts&... args) {
     cl_int err{0};
     size_t buffer_size = sizeof(typename T0::value_type) * arg0.size();
     auto buffer = clCreateBuffer(m_context.get(),
                                  CL_MEM_READ_ONLY,
                                  buffer_size,
                                  nullptr,
                                  &err);
     if (err != CL_SUCCESS) {
         CPPA_LOGMF(CPPA_ERROR, "clCreateBuffer: " << get_opencl_error(err));
         return;
     }
     cl_event event;
     err = clEnqueueWriteBuffer(m_queue.get(), buffer, CL_FALSE, 0,
                                buffer_size, arg0.data(),
                                0, nullptr, &event);
     if (err != CL_SUCCESS) {
         CPPA_LOGMF(CPPA_ERROR, "clEnqueueWriteBuffer: "
                                << get_opencl_error(err));
         return;
     }
     events.push_back(std::move(event));
     mem_ptr tmp;
     tmp.adopt(std::move(buffer));
     arguments.push_back(tmp);
     add_arguments_to_kernel_rec(events, arguments, args...);
 }
Пример #2
0
void stdv_to_vectort(T0 &v1, igraph_vector_t &v2) {
	size_t n = v1.size();
	igraph_vector_resize(&v2, n);
	for (size_t i = 0; i < n; i++) VECTOR(v2)[i] = v1[i];
}