Spaces:
Runtime error
Runtime error
| // Copyright (C) 2018-2022 Intel Corporation | |
| // SPDX-License-Identifier: Apache-2.0 | |
| // | |
| #pragma OPENCL EXTENSION cl_khr_fp16 : enable | |
| __kernel void reorg_hwc_naive( | |
| __global half const *restrict src, | |
| __global half *restrict dst, | |
| int W, | |
| int H, | |
| int C, | |
| int stride) | |
| { | |
| const int out_c = C / (stride * stride); | |
| const int oc = C * (stride * stride); | |
| const int oh = H / stride; | |
| const int ow = W / stride; | |
| const int c = get_global_id(0); | |
| for (int h = 0; h < H; ++h) { | |
| int in_index = W * (h + H * c) + (0); | |
| int new_z = in_index / (oh * ow); | |
| int new_y = (in_index % (oh * ow)) / ow; | |
| int new_x = (in_index % (oh * ow)) % ow; | |
| int new_index = new_z + new_x * oc + new_y * oc * ow; | |
| in_index++; | |
| int c2 = c % out_c; | |
| int offset = c / out_c; | |
| int w2 = 0 * stride + offset % stride; | |
| int h2 = h * stride + offset / stride; | |
| int out_index = w2 + W * stride * (h2 + H * stride * c2); | |
| #pragma unroll 2 | |
| for (int i = 0; i < W; ++i, out_index += stride, in_index++) { | |
| // repacking coordinates | |
| int k0 = out_index / (H * W); | |
| int j0 = (out_index % (H * W)) / W; | |
| int i0 = (out_index % (H * W)) % W; | |
| int out_index_repack = k0 + C * i0 + C * W * j0; | |
| dst[new_index] = src[out_index_repack]; | |
| int new_z = in_index / (oh * ow); | |
| int new_y = (in_index % (oh * ow)) / ow; | |
| int new_x = (in_index % (oh * ow)) % ow; | |
| new_index = new_z + new_x * oc + new_y * oc * ow; | |
| } | |
| } | |
| } | |