Commit 3fe4e542 authored by Dominik Charousset's avatar Dominik Charousset

Merge branch 'topic/opencl' into unstable

parents 2cca1db6 66c4bed0
...@@ -69,7 +69,7 @@ class actor_facade<Ret(Args...)> : public actor { ...@@ -69,7 +69,7 @@ class actor_facade<Ret(Args...)> : public actor {
public: public:
typedef cow_tuple<typename util::rm_ref<Args>::type...> args_tuple; typedef cow_tuple<typename util::rm_ref<Args>::type...> args_tuple;
typedef std::function<option<args_tuple>(const any_tuple&)> arg_mapping; typedef std::function<option<args_tuple>(any_tuple)> arg_mapping;
typedef std::function<any_tuple(Ret&)> result_mapping; typedef std::function<any_tuple(Ret&)> result_mapping;
static actor_facade* create(command_dispatcher* dispatcher, static actor_facade* create(command_dispatcher* dispatcher,
...@@ -152,7 +152,7 @@ class actor_facade<Ret(Args...)> : public actor { ...@@ -152,7 +152,7 @@ class actor_facade<Ret(Args...)> : public actor {
void enqueue_impl(const actor_ptr& sender, any_tuple msg, message_id id, util::int_list<Is...>) { void enqueue_impl(const actor_ptr& sender, any_tuple msg, message_id id, util::int_list<Is...>) {
auto opt = m_map_args(msg); auto opt = m_map_args(msg);
if (opt) { if (opt) {
response_handle handle{this, sender, id}; response_handle handle{this, sender, id.response_id()};
size_t number_of_values{1}; size_t number_of_values{1};
std::for_each(m_global_dimensions.begin(), std::for_each(m_global_dimensions.begin(),
m_global_dimensions.end(), m_global_dimensions.end(),
......
...@@ -148,13 +148,13 @@ class command_impl : public command { ...@@ -148,13 +148,13 @@ class command_impl : public command {
/* get results from gpu */ /* get results from gpu */
cl_int err{0}; cl_int err{0};
cl_event read_event; cl_event read_event;
T results(m_number_of_values); T result(m_number_of_values);
err = clEnqueueReadBuffer(m_queue.get(), err = clEnqueueReadBuffer(m_queue.get(),
m_arguments[0].get(), m_arguments[0].get(),
CL_TRUE, CL_TRUE,
0, 0,
sizeof(typename T::value_type) * m_number_of_values, sizeof(typename T::value_type) * m_number_of_values,
results.data(), result.data(),
0, 0,
NULL, NULL,
&read_event); &read_event);
...@@ -164,7 +164,7 @@ class command_impl : public command { ...@@ -164,7 +164,7 @@ class command_impl : public command {
+ get_opencl_error(err) + get_opencl_error(err)
+ "'."); + "'.");
} }
auto mapped_result = m_map_result(results); auto mapped_result = m_map_result(result);
reply_tuple_to(m_handle, mapped_result); reply_tuple_to(m_handle, mapped_result);
//reply_to(m_handle, results); //reply_to(m_handle, results);
} }
......
...@@ -87,7 +87,7 @@ class command_dispatcher { ...@@ -87,7 +87,7 @@ class command_dispatcher {
std::vector<size_t> global_dims, std::vector<size_t> global_dims,
std::vector<size_t> global_offs, std::vector<size_t> global_offs,
std::vector<size_t> local_dims, std::vector<size_t> local_dims,
std::function<option<cow_tuple<typename util::rm_ref<Args>::type...>>(const any_tuple&)> map_args, std::function<option<cow_tuple<typename util::rm_ref<Args>::type...>>(any_tuple)> map_args,
std::function<any_tuple(Ret&)> map_result) std::function<any_tuple(Ret&)> map_result)
{ {
return actor_facade<Ret (Args...)>::create(this, return actor_facade<Ret (Args...)>::create(this,
......
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