| 65 | |
| 66 | template<typename Ti, typename To, af_op_t op> |
| 67 | static void scanFirstLauncher(Param &out, Param &tmp, const Param &in, |
| 68 | const bool isFinalPass, const uint groups_x, |
| 69 | const uint groups_y, const uint threads_x, |
| 70 | const bool inclusiveScan = true) { |
| 71 | using cl::EnqueueArgs; |
| 72 | using cl::NDRange; |
| 73 | |
| 74 | auto scan = getScanFirstKernel<Ti, To, op>("scanFirst", isFinalPass, |
| 75 | threads_x, inclusiveScan); |
| 76 | |
| 77 | NDRange local(threads_x, THREADS_PER_GROUP / threads_x); |
| 78 | NDRange global(groups_x * out.info.dims[2] * local[0], |
| 79 | groups_y * out.info.dims[3] * local[1]); |
| 80 | |
| 81 | uint lim = divup(out.info.dims[0], (threads_x * groups_x)); |
| 82 | |
| 83 | scan(EnqueueArgs(getQueue(), global, local), *out.data, out.info, *tmp.data, |
| 84 | tmp.info, *in.data, in.info, groups_x, groups_y, lim); |
| 85 | CL_DEBUG_FINISH(getQueue()); |
| 86 | } |
| 87 | |
| 88 | template<typename Ti, typename To, af_op_t op> |
| 89 | static void bcastFirstLauncher(Param &out, Param &tmp, const bool isFinalPass, |
nothing calls this directly
no test coverage detected