From 5bc6910e8c452f4cffaea4779d2a58ad771c5ccb Mon Sep 17 00:00:00 2001 From: baonudesifeizhai Date: Sun, 17 Aug 2025 20:39:07 -0400 Subject: [PATCH] fix: Add conditional compilation for OpenCL 2.0 compatibility - Add #ifdef CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT check - Fixes compilation error when targeting OpenCL 2.0 - CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT was introduced in OpenCL 3.0 - Maintains backward compatibility with OpenCL 3.0+ devices - Resolves issue #15368 --- ggml/src/ggml-opencl/ggml-opencl.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ggml/src/ggml-opencl/ggml-opencl.cpp b/ggml/src/ggml-opencl/ggml-opencl.cpp index 8a2ac7e377d15..fa99d2ef09129 100644 --- a/ggml/src/ggml-opencl/ggml-opencl.cpp +++ b/ggml/src/ggml-opencl/ggml-opencl.cpp @@ -2231,8 +2231,13 @@ static ggml_backend_opencl_context * ggml_cl2_init(ggml_backend_dev_t dev) { svm_caps & CL_DEVICE_SVM_ATOMICS ? "true" : "false"); if (opencl_c_version.major >= 3) { +#ifdef CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT CL_CHECK(clGetDeviceInfo(device, CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT, sizeof(cl_bool), &backend_ctx->non_uniform_workgroups, 0)); +#else + // OpenCL 3.0+ headers not available, assume support + backend_ctx->non_uniform_workgroups = true; +#endif } else { GGML_ASSERT(opencl_c_version.major == 2); // Non-uniform workgroup sizes is mandatory feature in v2.x.