]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
HIP: Supress transformation warning in softmax.cu
authoruvos <redacted>
Tue, 28 Jan 2025 22:06:32 +0000 (23:06 +0100)
committerGitHub <redacted>
Tue, 28 Jan 2025 22:06:32 +0000 (23:06 +0100)
loops with bounds not known at compile time can not be unrolled.
when ncols_template == 0, the bounds of the loop are not constexpr, thus llvm cant unroll the loops here.

ggml/src/ggml-cuda/softmax.cu

index 9aa4b84893855aedfe1caa2756584ff4f35844eb..da377200e01bb33cdcf7915aa4271b9ea142f288 100644 (file)
@@ -13,6 +13,12 @@ __device__ float __forceinline__ t2f32<half>(half val) {
     return __half2float(val);
 }
 
+// When ncols_template == 0 the bounds for the loops in this function are not known and can't be unrolled.
+// As we want to keep pragma unroll for all other cases we supress the clang transformation warning here.
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wpass-failed"
+#endif
 template <bool use_shared, int ncols_template, int block_size_template, typename T>
 static __global__ void soft_max_f32(
         const float * x, const T * mask, float * dst, const int ncols_par, const int nrows_y,
@@ -118,6 +124,9 @@ static __global__ void soft_max_f32(
         dst[col] = vals[col] * inv_sum;
     }
 }
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
 
 static __global__ void soft_max_back_f32(
         const float * grad, const float * dstf, float * dst, const int ncols, const float scale) {