Commit 861be5e0 authored by Joseph Noir's avatar Joseph Noir

code optimizations

parent 111eb6ba
......@@ -151,15 +151,15 @@ class actor_facade<Ret(Args...)> : public actor {
auto opt = m_map_args(msg);
if (opt) {
response_handle handle{this, sender, id.response_id()};
Ret result_buf(std::accumulate(m_global_dimensions.begin(),
m_global_dimensions.end(),
1, std::multiplies<size_t>{}));
size_t ret_size = std::accumulate(m_global_dimensions.begin(),
m_global_dimensions.end(),
1, std::multiplies<size_t>{});
std::vector<mem_ptr> arguments;
add_arguments_to_kernel(arguments,
m_context.get(),
m_kernel.get(),
result_buf,
get_ref<Is>(*opt)...);
add_arguments_to_kernel<Ret>(arguments,
m_context.get(),
m_kernel.get(),
ret_size,
get_ref<Is>(*opt)...);
enqueue_to_dispatcher(m_dispatcher,
make_counted<command_impl<Ret>>(handle,
m_kernel,
......@@ -231,13 +231,13 @@ class actor_facade<Ret(Args...)> : public actor {
void add_arguments_to_kernel(args_vec& arguments,
cl_context context,
cl_kernel kernel,
R& ret,
size_t ret_size,
Ts&&... args) {
arguments.clear();
cl_int err{0};
auto buf = clCreateBuffer(context,
CL_MEM_WRITE_ONLY,
sizeof(typename R::value_type) * ret.size(),
sizeof(typename R::value_type) * ret_size,
nullptr,
&err);
if (err != CL_SUCCESS) {
......
......@@ -80,7 +80,7 @@ class command_impl : public command {
1, std::multiplies<size_t>{}))
, m_handle(handle)
, m_kernel(kernel)
, m_arguments(arguments)
, m_arguments(move(arguments))
, m_global_dims(global_dims)
, m_offsets(offsets)
, m_local_dims(local_dims)
......@@ -141,7 +141,6 @@ class command_impl : public command {
void handle_results () {
cl_int err{0};
cl_event read_event;
T result(m_number_of_values);
err = clEnqueueReadBuffer(m_queue.get(),
m_arguments[0].get(),
......@@ -151,14 +150,12 @@ class command_impl : public command {
result.data(),
0,
nullptr,
&read_event);
clReleaseEvent(read_event);
nullptr);
if (err != CL_SUCCESS) {
throw std::runtime_error("clEnqueueReadBuffer: "
+ get_opencl_error(err));
}
auto mapped_result = m_map_result(result);
reply_tuple_to(m_handle, mapped_result);
reply_tuple_to(m_handle, m_map_result(result));
}
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment