/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck_tile/ops/common/utils.hpp Source File

/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck_tile/ops/common/utils.hpp Source File#

Composable Kernel: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck_tile/ops/common/utils.hpp Source File
utils.hpp
Go to the documentation of this file.
1 // Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
2 // SPDX-License-Identifier: MIT
3 
4 #pragma once
5 
6 #include <iostream>
7 #include <string>
8 
9 #include "ck_tile/core.hpp"
10 
11 namespace ck_tile {
12 
13 // clang-format off
14 template <typename T> struct DataTypeTraits;
15 template <> struct DataTypeTraits<float> { static constexpr const char * name = "fp32"; };
16 template <> struct DataTypeTraits<double> { static constexpr const char * name = "fp64"; };
17 template <> struct DataTypeTraits<int32_t> { static constexpr const char * name = "int32"; };
18 template <> struct DataTypeTraits<fp16_t> { static constexpr const char * name = "fp16"; };
19 template <> struct DataTypeTraits<bf16_t> { static constexpr const char * name = "bf16"; };
20 template <> struct DataTypeTraits<fp8_t> { static constexpr const char * name = "fp8"; };
21 template <> struct DataTypeTraits<bf8_t> { static constexpr const char * name = "bf8"; };
22 template <> struct DataTypeTraits<int8_t> { static constexpr const char * name = "int8"; };
23 template <> struct DataTypeTraits<pk_int4_t> { static constexpr const char * name = "pk_int4"; };
24 template <> struct DataTypeTraits<pk_fp4_t> { static constexpr const char * name = "pk_fp4"; };
25 
26 template <memory_operation_enum MemOp> struct memOpToStr;
27 template <> struct memOpToStr<memory_operation_enum::set> { static constexpr const char * name = "set"; };
28 template <> struct memOpToStr<memory_operation_enum::atomic_add> { static constexpr const char * name = "atomic_add"; };
29 template <> struct memOpToStr<memory_operation_enum::atomic_max> { static constexpr const char * name = "atomic_max"; };
30 template <> struct memOpToStr<memory_operation_enum::add> { static constexpr const char * name = "add"; };
31 // clang-format on
32 
33 template <typename ADataType_, typename BDataType_>
34 std::string gemm_prec_str()
35 {
36  std::string base_str = std::string(DataTypeTraits<ADataType_>::name);
37  if(!std::is_same_v<ADataType_, BDataType_>)
38  {
39  base_str += "_" + std::string(DataTypeTraits<BDataType_>::name);
40  }
41  return base_str;
42 }
43 
44 template <memory_operation_enum MemOp_>
45 std::string mem_op_string()
46 {
47  return std::string(memOpToStr<MemOp_>::name);
48 }
49 
50 } // namespace ck_tile
Definition: cluster_descriptor.hpp:13
_BitInt(8) fp8_t
Definition: float8.hpp:204
CK_TILE_DEVICE void atomic_add(X *p_dst, const X &x)
_Float16 fp16_t
Definition: half.hpp:110
int8_t int8_t
Definition: int8.hpp:20
CK_TILE_HOST_DEVICE T add(const T &a, const T &b)
Definition: generic_memory_space_atomic.hpp:16
bfloat16_t bf16_t
Definition: bfloat16.hpp:113
std::string mem_op_string()
Definition: utils.hpp:45
std::string gemm_prec_str()
Definition: utils.hpp:34
int32_t int32_t
Definition: integer.hpp:10
unsigned _BitInt(8) bf8_t
Definition: float8.hpp:206
__device__ X atomic_max(X *p_dst, const X &x)
Definition: utils.hpp:14
Definition: utils.hpp:26
Definition: pk_fp4.hpp:76
Definition: pk_int4.hpp:21