aiter_enum.h 1.99 KB
Newer Older
Xiaowei.zhang's avatar
Xiaowei.zhang committed
1
2
#pragma once
// SPDX-License-Identifier: MIT
3
4
5
// Copyright (C) 2024-2026, Advanced Micro Devices, Inc. All rights reserved.
// Single source of truth: aiter/ops/enum.py parses enums from this file
#include <string>
Xiaowei.zhang's avatar
Xiaowei.zhang committed
6
7
8

enum class ActivationType : int
{
9
10
11
12
    No     = -1,
    Silu   = 0,
    Gelu   = 1,
    Swiglu = 2,
Xiaowei.zhang's avatar
Xiaowei.zhang committed
13
14
15
16
17
18
19
20
21
};
enum class QuantType : int
{
    No,
    per_Tensor,
    per_Token,
    per_1x32,
    per_1x128,
    per_128x128,
22
23
    per_256x128,
    per_1024x128,
Xiaowei.zhang's avatar
Xiaowei.zhang committed
24
};
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
typedef enum
{
    AITER_DTYPE_fp8,
    AITER_DTYPE_fp8_e8m0,
    AITER_DTYPE_fp16,
    AITER_DTYPE_bf16,
    AITER_DTYPE_fp32,
    AITER_DTYPE_i4x2,
    AITER_DTYPE_fp4x2,
    AITER_DTYPE_u32,
    AITER_DTYPE_i32,
    AITER_DTYPE_i16,
    AITER_DTYPE_i8,
    AITER_DTYPE_u8,
    AITER_DTYPE_i64,
    AITER_DTYPE_u64,
} AiterDtype;

static inline size_t AiterDtype_element_size(AiterDtype dtype)
{
    switch(dtype)
    {
    case AITER_DTYPE_fp8:
    case AITER_DTYPE_fp8_e8m0:
    case AITER_DTYPE_i4x2:
    case AITER_DTYPE_fp4x2:
    case AITER_DTYPE_i8:
    case AITER_DTYPE_u8: return 1;
    case AITER_DTYPE_fp16:
    case AITER_DTYPE_bf16:
    case AITER_DTYPE_i16: return 2;
    case AITER_DTYPE_fp32:
    case AITER_DTYPE_u32:
    case AITER_DTYPE_i32: return 4;
    case AITER_DTYPE_i64:
    case AITER_DTYPE_u64: return 8;
    default: return 0;
    }
}

static inline std::string AiterDtype_to_str(int dtype)
{
    switch(dtype)
    {
    case AITER_DTYPE_fp8: return "fp8";
    case AITER_DTYPE_fp8_e8m0: return "fp8_e8m0";
    case AITER_DTYPE_fp16: return "fp16";
    case AITER_DTYPE_bf16: return "bf16";
    case AITER_DTYPE_fp32: return "fp32";
    case AITER_DTYPE_i4x2: return "i4x2";
    case AITER_DTYPE_fp4x2: return "fp4x2";
    case AITER_DTYPE_u32: return "u32";
    case AITER_DTYPE_i32: return "i32";
    case AITER_DTYPE_i16: return "i16";
    case AITER_DTYPE_i8: return "i8";
    case AITER_DTYPE_u8: return "u8";
    case AITER_DTYPE_i64: return "i64";
    case AITER_DTYPE_u64: return "u64";
    default: return "unknown";
    }
}