Better control flow through options
This commit is contained in:
@@ -105,23 +105,22 @@ std::vector<int_t> maxpy::input_sizes(expressions_tuple const & expressions)
|
||||
}
|
||||
|
||||
void maxpy::enqueue(cl::CommandQueue & queue, std::vector<cl_ext::lazy_compiler> & programs,
|
||||
unsigned int label, expressions_tuple const & expressions, operation_cache * cache)
|
||||
unsigned int label, controller<expressions_tuple> const & controller)
|
||||
{
|
||||
expressions_tuple const & expressions = controller.x();
|
||||
char kname[10];
|
||||
fill_kernel_name(kname, label, "d");
|
||||
cl::Program & program = programs[0].program();
|
||||
cl::Kernel kernel(program, kname);
|
||||
cl::NDRange grange(p_.local_size_0*p_.num_groups_0, p_.local_size_1*p_.num_groups_1);
|
||||
cl::NDRange lrange(p_.local_size_0, p_.local_size_1);
|
||||
cl::NDRange global(p_.local_size_0*p_.num_groups_0, p_.local_size_1*p_.num_groups_1);
|
||||
cl::NDRange local(p_.local_size_0, p_.local_size_1);
|
||||
unsigned int current_arg = 0;
|
||||
std::vector<int_t> MN = input_sizes(expressions);
|
||||
kernel.setArg(current_arg++, cl_uint(MN[0]));
|
||||
kernel.setArg(current_arg++, cl_uint(MN[1]));
|
||||
set_arguments(expressions, kernel, current_arg);
|
||||
queue.enqueueNDRangeKernel(kernel, cl::NullRange, grange, lrange);
|
||||
|
||||
if(cache)
|
||||
cache->push_back(queue, kernel, cl::NullRange, grange, lrange);
|
||||
controller.execution_options().enqueue_cache(queue, kernel, cl::NullRange, global, local);
|
||||
}
|
||||
|
||||
template class base_impl<maxpy, maxpy_parameters>;
|
||||
|
Reference in New Issue
Block a user