mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-05-18 20:09:25 +00:00
Add mechanism to build CK for select data types, add Navi3x CI. (#790)
* allow building CK for specific data types
* add CI build and test stage on Naiv3x without some int8 instances
* add missing gemm fp16 instances
* add the changes to the missed cmake file
* add empty lines at end of source files
* Do not build quantization client example on navi3 in CI
* disable batched_gemm_multi_d_int8 instances with DTYPES
* disable device_conv2d_bwd_data_instance with DTYPES
* fix ckprofiler for conv_bwd_data for int8
* properly isolate the conv_bwd_data int8 instances
* remove empty line
[ROCm/composable_kernel commit: 189ea3b9aa]
This commit is contained in:
@@ -70,8 +70,10 @@ int profile_batched_gemm_multi_d(int argc, char* argv[])
|
||||
|
||||
const int BatchCount = std::stoi(argv[17]);
|
||||
|
||||
using F16 = ck::half_t;
|
||||
using F16 = ck::half_t;
|
||||
#ifdef __int8__
|
||||
using INT8 = int8_t;
|
||||
#endif
|
||||
|
||||
using Row = ck::tensor_layout::gemm::RowMajor;
|
||||
using Col = ck::tensor_layout::gemm::ColumnMajor;
|
||||
@@ -163,6 +165,7 @@ int profile_batched_gemm_multi_d(int argc, char* argv[])
|
||||
{
|
||||
return profile(F16{}, F16{}, F16{}, Col{}, Col{}, Row{});
|
||||
}
|
||||
#ifdef __int8__
|
||||
else if(data_type == GemmDataType::INT8_INT8_INT8 && layout == GemmMatrixLayout::MK_KN_MN)
|
||||
{
|
||||
return profile(INT8{}, INT8{}, INT8{}, Row{}, Row{}, Row{});
|
||||
@@ -179,6 +182,7 @@ int profile_batched_gemm_multi_d(int argc, char* argv[])
|
||||
{
|
||||
return profile(INT8{}, INT8{}, INT8{}, Col{}, Col{}, Row{});
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
std::cout << "this data_type & layout is not implemented" << std::endl;
|
||||
|
||||
@@ -77,7 +77,9 @@ int profile_conv_bwd_data(int argc, char* argv[])
|
||||
using F32 = float;
|
||||
using F16 = ck::half_t;
|
||||
using BF16 = ck::bhalf_t;
|
||||
#ifdef __int8__
|
||||
using INT8 = int8_t;
|
||||
#endif
|
||||
|
||||
using NWC = ck::tensor_layout::convolution::NWC;
|
||||
using NHWC = ck::tensor_layout::convolution::NHWC;
|
||||
@@ -138,10 +140,12 @@ int profile_conv_bwd_data(int argc, char* argv[])
|
||||
{
|
||||
return profile(I1, NWC{}, KXC{}, NWK{}, BF16{}, BF16{}, BF16{});
|
||||
}
|
||||
#ifdef __int8__
|
||||
else if(data_type == ConvDataType::INT8_INT8_INT8)
|
||||
{
|
||||
return profile(I1, NWC{}, KXC{}, NWK{}, INT8{}, INT8{}, INT8{});
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if(num_dim_spatial == 2 && layout == ConvLayout::NHWC_KYXC_NHWK)
|
||||
{
|
||||
@@ -157,10 +161,12 @@ int profile_conv_bwd_data(int argc, char* argv[])
|
||||
{
|
||||
return profile(I2, NHWC{}, KYXC{}, NHWK{}, BF16{}, BF16{}, BF16{});
|
||||
}
|
||||
#ifdef __int8__
|
||||
else if(data_type == ConvDataType::INT8_INT8_INT8)
|
||||
{
|
||||
return profile(I2, NHWC{}, KYXC{}, NHWK{}, INT8{}, INT8{}, INT8{});
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if(num_dim_spatial == 3 && layout == ConvLayout::NHWC_KYXC_NHWK)
|
||||
{
|
||||
@@ -176,10 +182,12 @@ int profile_conv_bwd_data(int argc, char* argv[])
|
||||
{
|
||||
return profile(I3, NDHWC{}, KZYXC{}, NDHWK{}, BF16{}, BF16{}, BF16{});
|
||||
}
|
||||
#ifdef __int8__
|
||||
else if(data_type == ConvDataType::INT8_INT8_INT8)
|
||||
{
|
||||
return profile(I3, NDHWC{}, KZYXC{}, NDHWK{}, INT8{}, INT8{}, INT8{});
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
std::cout << "this data_type & layout is not implemented" << std::endl;
|
||||
|
||||
@@ -67,11 +67,15 @@ int profile_gemm(int argc, char* argv[])
|
||||
const int StrideB = std::stoi(argv[12]);
|
||||
const int StrideC = std::stoi(argv[13]);
|
||||
|
||||
using F32 = float;
|
||||
using F16 = ck::half_t;
|
||||
using BF16 = ck::bhalf_t;
|
||||
using F32 = float;
|
||||
using F16 = ck::half_t;
|
||||
#ifdef __bf16__
|
||||
using BF16 = ck::bhalf_t;
|
||||
#endif
|
||||
#ifdef __int8__
|
||||
using INT8 = int8_t;
|
||||
using INT32 = int32_t;
|
||||
#endif
|
||||
|
||||
using Row = ck::tensor_layout::gemm::RowMajor;
|
||||
using Col = ck::tensor_layout::gemm::ColumnMajor;
|
||||
@@ -149,6 +153,7 @@ int profile_gemm(int argc, char* argv[])
|
||||
{
|
||||
return profile(Col{}, Col{}, Row{}, F16{}, F16{}, F32{}, F16{});
|
||||
}
|
||||
#ifdef __bf16__
|
||||
else if(data_type == GemmDataType::BF16_BF16_BF16 && layout == GemmMatrixLayout::MK_KN_MN)
|
||||
{
|
||||
return profile(Row{}, Row{}, Row{}, BF16{}, BF16{}, F32{}, BF16{});
|
||||
@@ -165,6 +170,8 @@ int profile_gemm(int argc, char* argv[])
|
||||
{
|
||||
return profile(Col{}, Col{}, Row{}, BF16{}, BF16{}, F32{}, BF16{});
|
||||
}
|
||||
#endif
|
||||
#ifdef __int8__
|
||||
else if(data_type == GemmDataType::INT8_INT8_INT8 && layout == GemmMatrixLayout::MK_KN_MN)
|
||||
{
|
||||
return profile(Row{}, Row{}, Row{}, INT8{}, INT8{}, INT32{}, INT8{});
|
||||
@@ -181,6 +188,7 @@ int profile_gemm(int argc, char* argv[])
|
||||
{
|
||||
return profile(Col{}, Col{}, Row{}, INT8{}, INT8{}, INT32{}, INT8{});
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
std::cout << "this data_type & layout is not implemented" << std::endl;
|
||||
|
||||
Reference in New Issue
Block a user