Hi, @Laurawly I am trying to understand OpenCL’s scheduler. I’ve read OpenCL AutoTVM questions but still cannot figure out a couple of stuff. I’d appreciate some answers:
- In nchw scheduler, do you convert the kernel to NCHW16c?
- Why is kernel, in kernel_vec operation, divided into blocks by first axis, num_filters and not second one, channel?
- What’s the purpose of channels in convolution operation? When could it be useful? (in python/relay/op/nn.py)
- How was this if statement created? Are these numbers from a specific iGPU? If yes, which one?
block_w = 1 block_h = 1 if stride_h == 2: if num_filter + kernel_h == 515: block_h = 4 block_w = 4 else: block_h = 4 block_w = 5 elif kernel_h == 3: if num_filter == 512: block_h = 2 block_w = 7 else: block_h = 2 block_w = 14 elif kernel_h == 7 and padding == 3 and stride == 1: block_h = 3 block_w = 4 else: block_h = 1 block_w = 16