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