     int m,
     int n,
     float epsilon) {
+#if CUDA_ARCH_FP16_SUPPORTED(__CUDA_ARCH__)
   __shared__ float s_mean;
   __shared__ float s_variance;
   float x_sum = 0.0f;

    }
    normed_output[index] = val;
  }
}
#endif


    float *var = nullptr;
    const int VecSize = 8;
    // if odd
#if CUDA_ARCH_FP16_SUPPORTED(__CUDA_ARCH__)
    if (hidden & 1 == 0) {
      int half_n = hidden / 2;
      int half_n_32 = (half_n + 31) / 32 * 32;
