#include "opencl_source_map.hpp" namespace MNN { const char* layernorm = "#ifdef MNN_SUPPORT_FP16\n" "#pragma OPENCL EXTENSION cl_khr_fp16 : enable\n" "#endif\n" "__constant sampler_t SAMPLER=CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST;\n" "#ifdef LOCAL_SIZE\n" "__kernel void layernorm_w(__private int global_dim0,__private int global_dim1,__private int global_dim2,\n" " __read_only image2d_t input,\n" " __write_only image2d_t output,\n" " __private const int width,\n" " __private const int height,\n" " __private const int channel,\n" "#ifdef GAMMA_BETA\n" " __global const FLOAT *gamma,\n" " __global const FLOAT *beta,\n" "#endif\n" " __private float epsilon){\n" " int3 pos=(int3)(get_global_id(0),get_global_id(1),get_global_id(2));\n" " float4 local sum_mnn[LOCAL_SIZE];\n" " #ifndef RMSNORM\n" " float4 local sum_mean_mnn[LOCAL_SIZE];\n" " #endif\n" " if (pos.x0; i /= 2){\n" " if (lid0; i /= 2){\n" " if (lid0; i /= 2){\n" " if (lid0; i /= 2){\n" " if (lid0; i /= 2){\n" " if (lid0; i /= 2){\n" " if (lid