From e316ba18ed446643608b9f7a10d2e3f42585875a Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Thu, 23 Oct 2025 22:01:19 +0200 Subject: [PATCH] [CK_BUILDER] old ck build fixes (#3075) * Disable c++20-compat warnings when building old CK in C++20 mode Turns out that this creates some warnings for no good reason. * ck-builder: add missing layouts and element-wise op names For layouts, we can directly use the ::name attribute, which should cover all layouts. For element-wise ops, I just added the ones which are currently missing when compiling CK with -DMIOPEN_REQ_LIBS_ONLY. [ROCm/composable_kernel commit: d0364641ed7f7520ed0163e4768d900b8c07af7a] --- cmake/EnableCompilerWarnings.cmake | 3 ++ .../builder/reflect/instance_traits_util.hpp | 45 ++++++++----------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/cmake/EnableCompilerWarnings.cmake b/cmake/EnableCompilerWarnings.cmake index 0c81f8df98..4fdbb896de 100644 --- a/cmake/EnableCompilerWarnings.cmake +++ b/cmake/EnableCompilerWarnings.cmake @@ -99,6 +99,9 @@ else() -Wno-unused-lambda-capture -Wno-nvcc-compat ) + if(CK_CXX_STANDARD GREATER_EQUAL 20) + list(APPEND CMAKE_COMPILER_WARNINGS -Wno-c++20-compat) + endif() else() if (CMAKE_${COMPILER}_COMPILER_ID MATCHES "GNU" AND ${COMPILER} MATCHES "CXX") # cmake 3.5.2 does not support >=. diff --git a/experimental/builder/include/ck_tile/builder/reflect/instance_traits_util.hpp b/experimental/builder/include/ck_tile/builder/reflect/instance_traits_util.hpp index 160a560529..90e42528e1 100644 --- a/experimental/builder/include/ck_tile/builder/reflect/instance_traits_util.hpp +++ b/experimental/builder/include/ck_tile/builder/reflect/instance_traits_util.hpp @@ -60,45 +60,38 @@ consteval std::string_view type_name() template constexpr std::string_view layout_name() { - // Convolution layouts - if constexpr(std::is_same_v) - return "GNHWC"; - else if constexpr(std::is_same_v) - return "GKYXC"; - else if constexpr(std::is_same_v) - return "GNHWK"; - else if constexpr(std::is_same_v) - return "GKZYXC"; - else if constexpr(std::is_same_v) - return "GNDHWC"; - else if constexpr(std::is_same_v) - return "GNDHWK"; - else if constexpr(std::is_same_v) - return "NHWGC"; - else if constexpr(std::is_same_v) - return "KYXGC"; - else if constexpr(std::is_same_v) - return "NHWGK"; + if constexpr(requires { + { T::name } -> std::convertible_to; + }) + return T::name; else - static_assert(false, "unknown_layout"); + static_assert(false, "layout type is missing name attribute"); } // Convert element-wise operation types to string names template constexpr std::string_view elementwise_op_name() { - if constexpr(std::is_same_v) + namespace element_wise = ck::tensor_operation::element_wise; + + if constexpr(std::is_same_v) return "PassThrough"; - else if constexpr(std::is_same_v) + else if constexpr(std::is_same_v) return "Scale"; - else if constexpr(std::is_same_v) + else if constexpr(std::is_same_v) return "Bilinear"; - else if constexpr(std::is_same_v) + else if constexpr(std::is_same_v) return "Add"; - else if constexpr(std::is_same_v) + else if constexpr(std::is_same_v) return "AddRelu"; - else if constexpr(std::is_same_v) + else if constexpr(std::is_same_v) return "Relu"; + else if constexpr(std::is_same_v) + return "BiasNormalizeInInferClamp"; + else if constexpr(std::is_same_v) + return "Clamp"; + else if constexpr(std::is_same_v) + return "AddClamp"; else static_assert(false, "unknown_op"); }