"...git@developer.sourcefind.cn:renzhc/diffusers_dcu.git" did not exist on "7101c7316b6f6d3f4e578f29c108533cb678a304"
Commit 8f48018d authored by Bartlomiej Kocot's avatar Bartlomiej Kocot
Browse files

Fix source dtypes seletor for examples and tests

parent eb99b233
...@@ -11,31 +11,27 @@ function(add_example_executable EXAMPLE_NAME FILE_NAME) ...@@ -11,31 +11,27 @@ function(add_example_executable EXAMPLE_NAME FILE_NAME)
if(DEFINED DTYPES) if(DEFINED DTYPES)
foreach(source IN LISTS FILE_NAME) foreach(source IN LISTS FILE_NAME)
set(test 0) set(test 0)
foreach(type IN LISTS DTYPES) if((source MATCHES "_fp16" OR source MATCHES "_f16") AND NOT "fp16" IN_LIST DTYPES)
if(type MATCHES "fp16") set(test 1)
set(type1 "_f16") endif()
elseif(type MATCHES "fp32") if((source MATCHES "_fp32" OR source MATCHES "_f32") AND NOT "fp32" IN_LIST DTYPES)
set(type1 "_f32") set(test 1)
elseif(type MATCHES "fp8") endif()
set(type1 "_f8") if((source MATCHES "_fp64" OR source MATCHES "_f64") AND NOT "fp64" IN_LIST DTYPES)
elseif(type MATCHES "bf16") set(test 1)
set(type1 "_b16") endif()
elseif(type MATCHES "fp64") if((source MATCHES "_fp8" OR source MATCHES "_f8") AND NOT "fp8" IN_LIST DTYPES)
set(type1 "_f64") set(test 1)
elseif(type MATCHES "int8") endif()
set(type1 "_i8") if((source MATCHES "_bf8" OR source MATCHES "_bf8") AND NOT "bf8" IN_LIST DTYPES)
endif() set(test 1)
if("${source}" MATCHES "${type}" OR "${source}" MATCHES "${type1}") endif()
#if filename matches any selected type, exit type loop and do no exclude the file from the list if((source MATCHES "_bf16" OR source MATCHES "_b16") AND NOT "bf16" IN_LIST DTYPES)
set(test 0) set(test 1)
break() endif()
elseif((source MATCHES "fp8" OR source MATCHES "fp32" OR source MATCHES "fp64" OR source MATCHES "bf16" OR source MATCHES "int8" OR source MATCHES "fp16" OR if((source MATCHES "_int8" OR source MATCHES "_i8") AND NOT "int8" IN_LIST DTYPES)
source MATCHES "_f8" OR source MATCHES "_f32" OR source MATCHES "_f64" OR source MATCHES "_i8" OR source MATCHES "_f16" OR source MATCHES "_b16") AND set(test 1)
NOT(source MATCHES type OR source MATCHES type1)) endif()
#if filename contains a type which doesn't match any selected type, mark it for removal
set(test 1)
endif()
endforeach()
if(test EQUAL 1) if(test EQUAL 1)
message("removing example source file ${source} ") message("removing example source file ${source} ")
list(REMOVE_ITEM FILE_NAME "${source}") list(REMOVE_ITEM FILE_NAME "${source}")
...@@ -68,31 +64,27 @@ function(add_example_executable_no_testing EXAMPLE_NAME FILE_NAME) ...@@ -68,31 +64,27 @@ function(add_example_executable_no_testing EXAMPLE_NAME FILE_NAME)
if(DEFINED DTYPES) if(DEFINED DTYPES)
foreach(source IN LISTS FILE_NAME) foreach(source IN LISTS FILE_NAME)
set(test 0) set(test 0)
foreach(type IN LISTS DTYPES) if((source MATCHES "_fp16" OR source MATCHES "_f16") AND NOT "fp16" IN_LIST DTYPES)
if(type MATCHES "fp16") set(test 1)
set(type1 "_f16") endif()
elseif(type MATCHES "fp32") if((source MATCHES "_fp32" OR source MATCHES "_f32") AND NOT "fp32" IN_LIST DTYPES)
set(type1 "_f32") set(test 1)
elseif(type MATCHES "fp8") endif()
set(type1 "_f8") if((source MATCHES "_fp64" OR source MATCHES "_f64") AND NOT "fp64" IN_LIST DTYPES)
elseif(type MATCHES "bf16") set(test 1)
set(type1 "_b16") endif()
elseif(type MATCHES "fp64") if((source MATCHES "_fp8" OR source MATCHES "_f8") AND NOT "fp8" IN_LIST DTYPES)
set(type1 "_f64") set(test 1)
elseif(type MATCHES "int8") endif()
set(type1 "_i8") if((source MATCHES "_bf8" OR source MATCHES "_bf8") AND NOT "bf8" IN_LIST DTYPES)
endif() set(test 1)
if("${source}" MATCHES "${type}" OR "${source}" MATCHES "${type1}") endif()
#if filename matches any selected type, exit type loop and do no exclude the file from the list if((source MATCHES "_bf16" OR source MATCHES "_b16") AND NOT "bf16" IN_LIST DTYPES)
set(test 0) set(test 1)
break() endif()
elseif((source MATCHES "fp8" OR source MATCHES "fp32" OR source MATCHES "fp64" OR source MATCHES "bf16" OR source MATCHES "int8" OR source MATCHES "fp16" OR if((source MATCHES "_int8" OR source MATCHES "_i8") AND NOT "int8" IN_LIST DTYPES)
source MATCHES "_f8" OR source MATCHES "_f32" OR source MATCHES "_f64" OR source MATCHES "_i8" OR source MATCHES "_f16" OR source MATCHES "_b16") AND set(test 1)
NOT(source MATCHES type OR source MATCHES type1)) endif()
#if filename contains a type which doesn't match any selected type, mark it for removal
set(test 1)
endif()
endforeach()
if(test EQUAL 1) if(test EQUAL 1)
message("removing example ${source} ") message("removing example ${source} ")
list(REMOVE_ITEM FILE_NAME "${source}") list(REMOVE_ITEM FILE_NAME "${source}")
......
...@@ -449,8 +449,11 @@ struct DppGemm ...@@ -449,8 +449,11 @@ struct DppGemm
Run(const ADataType& p_a_wave, const BDataType& p_b_wave, CDataType& p_c_thread) const Run(const ADataType& p_a_wave, const BDataType& p_b_wave, CDataType& p_c_thread) const
{ {
static_assert(is_same<BaseType, double>::value || is_same<BaseType, float>::value || static_assert(is_same<BaseType, double>::value || is_same<BaseType, float>::value ||
is_same<BaseType, half_t>::value || is_same<BaseType, bhalf_t>::value || is_same<BaseType, half_t>::value || is_same<BaseType, bhalf_t>::value
is_same<BaseType, int8_t>::value || is_same<BaseType, f8_t>::value, #if defined CK_ENABLE_FP8
|| is_same<BaseType, f8_t>::value
#endif
|| is_same<BaseType, int8_t>::value,
"base BaseType must be double, float, half, bfloat16, and int8_t!"); "base BaseType must be double, float, half, bfloat16, and int8_t!");
static_for<0, KPack / dpp_instr.k_per_dpp, 1>{}([&](auto k) { static_for<0, KPack / dpp_instr.k_per_dpp, 1>{}([&](auto k) {
......
...@@ -18,9 +18,12 @@ namespace instance { ...@@ -18,9 +18,12 @@ namespace instance {
using BF16 = ck::bhalf_t; using BF16 = ck::bhalf_t;
using F16 = ck::half_t; using F16 = ck::half_t;
using F32 = float; using F32 = float;
using BF8 = ck::bf8_t; #if defined CK_ENABLE_BF8
using F8 = ck::f8_t; using BF8 = ck::bf8_t;
#endif
#if defined CK_ENABLE_FP8
using F8 = ck::f8_t;
#endif
using Empty_Tuple = ck::Tuple<>; using Empty_Tuple = ck::Tuple<>;
template <ck::index_t... Is> template <ck::index_t... Is>
...@@ -146,6 +149,7 @@ using device_grouped_conv_bwd_data_xdl_f32_instances = ...@@ -146,6 +149,7 @@ using device_grouped_conv_bwd_data_xdl_f32_instances =
>; >;
// f16_f16_f16_comp_f8 // f16_f16_f16_comp_f8
#if defined CK_ENABLE_BF8 && defined CK_ENABLE_FP8
template <index_t NDimSpatial, template <index_t NDimSpatial,
typename ALayout, typename ALayout,
typename BLayout, typename BLayout,
...@@ -181,7 +185,7 @@ using device_grouped_conv_bwd_data_xdl_input_fp16_comp_bf8f8_instances = ...@@ -181,7 +185,7 @@ using device_grouped_conv_bwd_data_xdl_input_fp16_comp_bf8f8_instances =
DeviceGroupedConvBwdDataMultipleD_Xdl_CShuffle_v1< NDimSpatial, ALayout, BLayout, DsLayout, ELayout, F16, F16, F32, F32, Empty_Tuple, F16, PassThrough, PassThrough, PassThrough, ConvSpec, true, true, 1, 64, 32, 64, 32, 8, 8, 32, 32, 1, 2, S<4, 16, 1>, S<1, 0, 2>, S<1, 0, 2>, 2, 8, 8, 1, S<4, 8, 1>, S<0, 2, 1>, S<0, 2, 1>, 1, 8, 8, 1, 1, 1, S<1, 16, 1, 4>, 8, LoopScheduler::Default, BF8, F8> DeviceGroupedConvBwdDataMultipleD_Xdl_CShuffle_v1< NDimSpatial, ALayout, BLayout, DsLayout, ELayout, F16, F16, F32, F32, Empty_Tuple, F16, PassThrough, PassThrough, PassThrough, ConvSpec, true, true, 1, 64, 32, 64, 32, 8, 8, 32, 32, 1, 2, S<4, 16, 1>, S<1, 0, 2>, S<1, 0, 2>, 2, 8, 8, 1, S<4, 8, 1>, S<0, 2, 1>, S<0, 2, 1>, 1, 8, 8, 1, 1, 1, S<1, 16, 1, 4>, 8, LoopScheduler::Default, BF8, F8>
// clang-format on // clang-format on
>; >;
#endif
} // namespace instance } // namespace instance
} // namespace device } // namespace device
} // namespace tensor_operation } // namespace tensor_operation
......
...@@ -67,6 +67,10 @@ IF(IS_DIRECTORY "${subdir_path}") ...@@ -67,6 +67,10 @@ IF(IS_DIRECTORY "${subdir_path}")
message("fp8 instance found!") message("fp8 instance found!")
set(add_inst 1) set(add_inst 1)
endif() endif()
if(("${cmake_instance}" MATCHES "_bf8" OR "${cmake_instance}" MATCHES "_b8") AND DTYPES MATCHES "bf8")
message("bf8 instance found!")
set(add_inst 1)
endif()
if(("${cmake_instance}" MATCHES "_fp16" OR "${cmake_instance}" MATCHES "_f16") AND DTYPES MATCHES "fp16") if(("${cmake_instance}" MATCHES "_fp16" OR "${cmake_instance}" MATCHES "_f16") AND DTYPES MATCHES "fp16")
message("fp16 instance found!") message("fp16 instance found!")
set(add_inst 1) set(add_inst 1)
...@@ -98,6 +102,8 @@ IF(IS_DIRECTORY "${subdir_path}") ...@@ -98,6 +102,8 @@ IF(IS_DIRECTORY "${subdir_path}")
NOT "${cmake_instance}" MATCHES "_bf16" AND NOT "${cmake_instance}" MATCHES "_bf16" AND
NOT "${cmake_instance}" MATCHES "_int8" AND NOT "${cmake_instance}" MATCHES "_int8" AND
NOT "${cmake_instance}" MATCHES "_i8" AND NOT "${cmake_instance}" MATCHES "_i8" AND
NOT "${cmake_instance}" MATCHES "_bf8" AND
NOT "${cmake_instance}" MATCHES "_b8" AND
NOT "${cmake_instance}" MATCHES "_int4") OR NOT "${cmake_instance}" MATCHES "_int4") OR
NOT DEFINED DTYPES) NOT DEFINED DTYPES)
message("instance should be built for all types!") message("instance should be built for all types!")
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
// Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved. // Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved.
#if defined CK_ENABLE_FP16 && defined CK_ENABLE_FP8 && defined CK_ENABLE_BF8
#include "ck/library/tensor_operation_instance/add_device_operation_instance.hpp" #include "ck/library/tensor_operation_instance/add_device_operation_instance.hpp"
#include "ck/library/tensor_operation_instance/gpu/grouped_conv_bwd_data/device_grouped_conv_bwd_data_xdl_instance.hpp" #include "ck/library/tensor_operation_instance/gpu/grouped_conv_bwd_data/device_grouped_conv_bwd_data_xdl_instance.hpp"
...@@ -45,8 +46,8 @@ void add_device_grouped_conv3d_bwd_data_xdl_ndhwgk_gkzyxc_ndhwgc_input_f16_comp_ ...@@ -45,8 +46,8 @@ void add_device_grouped_conv3d_bwd_data_xdl_ndhwgk_gkzyxc_ndhwgc_input_f16_comp_
NDHWGC, NDHWGC,
ConvBwdDataFilter1x1Stride1Pad0>{}); ConvBwdDataFilter1x1Stride1Pad0>{});
} }
} // namespace instance } // namespace instance
} // namespace device } // namespace device
} // namespace tensor_operation } // namespace tensor_operation
} // namespace ck } // namespace ck
#endif
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
// Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved. // Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved.
#if defined CK_ENABLE_FP16 && defined CK_ENABLE_FP8 && defined CK_ENABLE_BF8
#include "ck/library/tensor_operation_instance/gpu/grouped_conv_fwd/device_grouped_conv_fwd_xdl_instance.hpp" #include "ck/library/tensor_operation_instance/gpu/grouped_conv_fwd/device_grouped_conv_fwd_xdl_instance.hpp"
#include "ck/library/tensor_operation_instance/add_device_operation_instance.hpp" #include "ck/library/tensor_operation_instance/add_device_operation_instance.hpp"
...@@ -49,8 +50,8 @@ void add_device_grouped_conv3d_fwd_xdl_ndhwgc_gkzyxc_ndhwgk_f16_comp_f8_instance ...@@ -49,8 +50,8 @@ void add_device_grouped_conv3d_fwd_xdl_ndhwgc_gkzyxc_ndhwgk_f16_comp_f8_instance
NDHWGK, NDHWGK,
ConvFwd1x1S1P0>{}); ConvFwd1x1S1P0>{});
} }
} // namespace instance } // namespace instance
} // namespace device } // namespace device
} // namespace tensor_operation } // namespace tensor_operation
} // namespace ck } // namespace ck
#endif
...@@ -13,31 +13,27 @@ function(add_test_executable TEST_NAME) ...@@ -13,31 +13,27 @@ function(add_test_executable TEST_NAME)
if(DEFINED DTYPES) if(DEFINED DTYPES)
foreach(source IN LISTS ARGN) foreach(source IN LISTS ARGN)
set(test 0) set(test 0)
foreach(type IN LISTS DTYPES) if((source MATCHES "_fp16" OR source MATCHES "_f16") AND NOT "fp16" IN_LIST DTYPES)
if(type MATCHES "fp16") set(test 1)
set(type1 "_f16") endif()
elseif(type MATCHES "fp32") if((source MATCHES "_fp32" OR source MATCHES "_f32") AND NOT "fp32" IN_LIST DTYPES)
set(type1 "_f32") set(test 1)
elseif(type MATCHES "fp8") endif()
set(type1 "_f8") if((source MATCHES "_fp64" OR source MATCHES "_f64") AND NOT "fp64" IN_LIST DTYPES)
elseif(type MATCHES "bf16") set(test 1)
set(type1 "_b16") endif()
elseif(type MATCHES "fp64") if((source MATCHES "_fp8" OR source MATCHES "_f8") AND NOT "fp8" IN_LIST DTYPES)
set(type1 "_f64") set(test 1)
elseif(type MATCHES "int8") endif()
set(type1 "_i8") if((source MATCHES "_bf8" OR source MATCHES "_bf8") AND NOT "bf8" IN_LIST DTYPES)
endif() set(test 1)
if("${source}" MATCHES "${type}" OR "${source}" MATCHES "${type1}") endif()
#if filename matches any selected type, exit type loop and do no exclude the file from the list if((source MATCHES "_bf16" OR source MATCHES "_b16") AND NOT "bf16" IN_LIST DTYPES)
set(test 0) set(test 1)
break() endif()
elseif((source MATCHES "fp8" OR source MATCHES "fp32" OR source MATCHES "fp64" OR source MATCHES "bf16" OR source MATCHES "int8" OR source MATCHES "fp16" OR if((source MATCHES "_int8" OR source MATCHES "_i8") AND NOT "int8" IN_LIST DTYPES)
source MATCHES "_f8" OR source MATCHES "_f32" OR source MATCHES "_f64" OR source MATCHES "_i8" OR source MATCHES "_f16" OR source MATCHES "_b16") AND set(test 1)
NOT(source MATCHES type OR source MATCHES type1)) endif()
#if filename contains a type which doesn't match any selected type, mark it for removal
set(test 1)
endif()
endforeach()
if(test EQUAL 1) if(test EQUAL 1)
message("removing test ${source} ") message("removing test ${source} ")
list(REMOVE_ITEM ARGN "${source}") list(REMOVE_ITEM ARGN "${source}")
...@@ -72,31 +68,27 @@ function(add_gtest_executable TEST_NAME) ...@@ -72,31 +68,27 @@ function(add_gtest_executable TEST_NAME)
if(DEFINED DTYPES) if(DEFINED DTYPES)
foreach(source IN LISTS ARGN) foreach(source IN LISTS ARGN)
set(test 0) set(test 0)
foreach(type IN LISTS DTYPES) if((source MATCHES "_fp16" OR source MATCHES "_f16") AND NOT "fp16" IN_LIST DTYPES)
if(type MATCHES "fp16") set(test 1)
set(type1 "_f16") endif()
elseif(type MATCHES "fp32") if((source MATCHES "_fp32" OR source MATCHES "_f32") AND NOT "fp32" IN_LIST DTYPES)
set(type1 "_f32") set(test 1)
elseif(type MATCHES "fp8") endif()
set(type1 "_f8") if((source MATCHES "_fp64" OR source MATCHES "_f64") AND NOT "fp64" IN_LIST DTYPES)
elseif(type MATCHES "bf16") set(test 1)
set(type1 "_b16") endif()
elseif(type MATCHES "fp64") if((source MATCHES "_fp8" OR source MATCHES "_f8") AND NOT "fp8" IN_LIST DTYPES)
set(type1 "_f64") set(test 1)
elseif(type MATCHES "int8") endif()
set(type1 "_i8") if((source MATCHES "_bf8" OR source MATCHES "_bf8") AND NOT "bf8" IN_LIST DTYPES)
endif() set(test 1)
if("${source}" MATCHES "${type}" OR "${source}" MATCHES "${type1}") endif()
#if filename matches any selected type, exit type loop and do no exclude the file from the list if((source MATCHES "_bf16" OR source MATCHES "_b16") AND NOT "bf16" IN_LIST DTYPES)
set(test 0) set(test 1)
break() endif()
elseif((source MATCHES "fp8" OR source MATCHES "fp32" OR source MATCHES "fp64" OR source MATCHES "bf16" OR source MATCHES "int8" OR source MATCHES "fp16" OR if((source MATCHES "_int8" OR source MATCHES "_i8") AND NOT "int8" IN_LIST DTYPES)
source MATCHES "_f8" OR source MATCHES "_f32" OR source MATCHES "_f64" OR source MATCHES "_i8" OR source MATCHES "_f16" OR source MATCHES "_b16") AND set(test 1)
NOT(source MATCHES type OR source MATCHES type1)) endif()
#if filename contains a type which doesn't match any selected type, mark it for removal
set(test 1)
endif()
endforeach()
if(test EQUAL 1) if(test EQUAL 1)
message("removing gtest ${source} ") message("removing gtest ${source} ")
list(REMOVE_ITEM ARGN "${source}") list(REMOVE_ITEM ARGN "${source}")
......
if (USE_BITINT_EXTENSION_INT4) if (USE_BITINT_EXTENSION_INT4)
add_gtest_executable(test_int4 int4.cpp) add_gtest_executable(test_int4 test_int4.cpp)
if(result EQUAL 0) if(result EQUAL 0)
target_link_libraries(test_int4 PRIVATE utility) target_link_libraries(test_int4 PRIVATE utility)
endif() endif()
endif() endif()
add_gtest_executable(test_fp8 fp8.cpp) add_gtest_executable(test_fp8 test_fp8.cpp)
if(result EQUAL 0) if(result EQUAL 0)
target_link_libraries(test_fp8 PRIVATE utility) target_link_libraries(test_fp8 PRIVATE utility)
endif() endif()
add_gtest_executable(test_bf8 bf8.cpp) add_gtest_executable(test_bf8 test_bf8.cpp)
if(result EQUAL 0) if(result EQUAL 0)
target_link_libraries(test_bf8 PRIVATE utility) target_link_libraries(test_bf8 PRIVATE utility)
endif() endif()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment