Commit 9ce2a1cf authored by Joseph Noir's avatar Joseph Noir

improved readability of add_arguments_to_kernel

rotate buffer, instead of multiple function calls
parent 8c5c49dc
......@@ -33,9 +33,9 @@
#define CPPA_OPENCL_ACTOR_FACADE_HPP
#include <ostream>
#include <iostream>
#include <algorithm>
#include <stdexcept>
#include <iostream>
#include "cppa/cppa.hpp"
......@@ -190,20 +190,16 @@ class actor_facade<Ret(Args...)> : public actor {
void add_arguments_to_kernel_rec(args_vec& arguments) {
cl_int err{0};
for(size_t i = 1; i < arguments.size(); ++i) {
// rotate left (output buffer to the end)
rotate(begin(arguments), begin(arguments) + 1, end(arguments));
for(size_t i = 0; i < arguments.size(); ++i) {
err = clSetKernelArg(m_kernel.get(),
(i-1),
i,
sizeof(cl_mem),
static_cast<void*>(&arguments[i]));
CPPA_LOG_ERROR_IF(err != CL_SUCCESS,
"clSetKernelArg: " << get_opencl_error(err));
}
err = clSetKernelArg(m_kernel.get(),
arguments.size()-1,
sizeof(cl_mem),
static_cast<void*>(&arguments[0]));
CPPA_LOG_ERROR_IF(err != CL_SUCCESS,
"clSetKernelArg: " << get_opencl_error(err));
}
template<typename T0, typename... Ts>
......
......@@ -88,7 +88,7 @@ class command : public ref_counted {
else {
auto event_r = m_read_event.get();
err = clEnqueueReadBuffer(m_queue.get(),
m_arguments[0].get(),
m_arguments.back().get(),
CL_FALSE,
0,
sizeof(typename R::value_type) * m_result_size,
......
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