profiler.cpp 4.09 KB
Newer Older
1
2
3
4
#include <iostream>
#include <numeric>
#include <initializer_list>
#include <cstdlib>
5
#include <cstring>
6

Chao Liu's avatar
Chao Liu committed
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool profile_gemm(int, char*[]);
bool profile_gemm_splitk(int, char*[]);
bool profile_gemm_bias_2d(int, char*[]);
bool profile_gemm_bias_relu(int, char*[]);
bool profile_gemm_bias_relu_add(int, char*[]);
bool profile_gemm_reduce(int, char*[]);
bool profile_batched_gemm(int, char*[]);
bool profile_grouped_gemm(int, char*[]);
bool profile_conv_fwd_bias_relu(int, char*[]);
bool profile_conv_fwd_bias_relu_add(int, char*[]);
bool profile_convnd_fwd(int argc, char* argv[]);
bool profile_convnd_bwd_data(int, char*[], int);
bool profile_reduce(int, char*[]);
bool profile_conv_bwd_weight(int, char*[]);
bool profile_batched_gemm_reduce(int, char*[]);
22
23
24

int main(int argc, char* argv[])
{
Chao Liu's avatar
clean  
Chao Liu committed
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
    auto print_help_message = []() {
        // clang-format off
        printf("arg1: tensor operation, gemm: GEMM\n"
               "                        gemm_splitk: GEMM Split-K\n"
               "                        gemm_bias_2d: GEMM+Bias(2D)\n"
               "                        gemm_bias_relu: GEMM+Bias+ReLU\n"
               "                        gemm_bias_relu_add: GEMM+Bias+ReLU+Add\n"
               "                        gemm_reduce: GEMM+Reduce\n"
               "                        grouped_gemm: Grouped GEMM\n"
               "                        conv_fwd: Convolution Forward\n"
               "                        conv_fwd_bias_relu: ForwardConvolution+Bias+ReLU\n"
               "                        conv_fwd_bias_relu_add: ForwardConvolution+Bias+ReLU+Add\n"
               "                        conv1d_bwd_data: Convolution Backward Data 1D\n"
               "                        conv2d_bwd_data: Convolution Backward Data 2D\n"
               "                        conv3d_bwd_data: Convolution Backward Data 3D\n"
               "                        reduce: Reduce\n"
               "                        conv2d_bwd_weight: Convolution Backward Weight 2D\n");
        // clang-format on
    };

    if(argc < 2)
    {
        print_help_message();
        exit(1);
    }

Chao Liu's avatar
Chao Liu committed
51
52
    bool pass = true;

53
54
    if(strcmp(argv[1], "gemm") == 0)
    {
Chao Liu's avatar
Chao Liu committed
55
56
        pass = profile_gemm(argc, argv);
    }
Chao Liu's avatar
clean  
Chao Liu committed
57
    else if(strcmp(argv[1], "gemm_splitk") == 0)
Chao Liu's avatar
Chao Liu committed
58
59
    {
        pass = profile_gemm_splitk(argc, argv);
60
    }
Jianfeng yan's avatar
Jianfeng yan committed
61
62
    else if(strcmp(argv[1], "gemm_bias_2d") == 0)
    {
Chao Liu's avatar
Chao Liu committed
63
        pass = profile_gemm_bias_2d(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
64
65
66
    }
    else if(strcmp(argv[1], "gemm_bias_relu") == 0)
    {
Chao Liu's avatar
Chao Liu committed
67
        pass = profile_gemm_bias_relu(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
68
69
70
    }
    else if(strcmp(argv[1], "gemm_bias_relu_add") == 0)
    {
Chao Liu's avatar
Chao Liu committed
71
        pass = profile_gemm_bias_relu_add(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
72
73
74
    }
    else if(strcmp(argv[1], "gemm_reduce") == 0)
    {
Chao Liu's avatar
Chao Liu committed
75
        pass = profile_gemm_reduce(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
76
77
78
    }
    else if(strcmp(argv[1], "batched_gemm") == 0)
    {
Chao Liu's avatar
Chao Liu committed
79
        pass = profile_batched_gemm(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
80
81
82
    }
    else if(strcmp(argv[1], "batched_gemm_reduce") == 0)
    {
Chao Liu's avatar
Chao Liu committed
83
        pass = profile_batched_gemm_reduce(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
84
85
86
    }
    else if(strcmp(argv[1], "grouped_gemm") == 0)
    {
Chao Liu's avatar
Chao Liu committed
87
        pass = profile_grouped_gemm(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
88
89
90
    }
    else if(strcmp(argv[1], "conv_fwd") == 0)
    {
Chao Liu's avatar
Chao Liu committed
91
        pass = profile_convnd_fwd(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
92
93
94
    }
    else if(strcmp(argv[1], "conv_fwd_bias_relu") == 0)
    {
Chao Liu's avatar
Chao Liu committed
95
        pass = profile_conv_fwd_bias_relu(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
96
97
98
    }
    else if(strcmp(argv[1], "conv_fwd_bias_relu_add") == 0)
    {
Chao Liu's avatar
Chao Liu committed
99
        pass = profile_conv_fwd_bias_relu_add(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
100
101
102
    }
    else if(strcmp(argv[1], "conv1d_bwd_data") == 0)
    {
Chao Liu's avatar
Chao Liu committed
103
        pass = profile_convnd_bwd_data(argc, argv, 1);
Jianfeng yan's avatar
Jianfeng yan committed
104
105
106
    }
    else if(strcmp(argv[1], "conv2d_bwd_data") == 0)
    {
Chao Liu's avatar
Chao Liu committed
107
        pass = profile_convnd_bwd_data(argc, argv, 2);
Jianfeng yan's avatar
Jianfeng yan committed
108
109
110
    }
    else if(strcmp(argv[1], "conv3d_bwd_data") == 0)
    {
Chao Liu's avatar
Chao Liu committed
111
        pass = profile_convnd_bwd_data(argc, argv, 3);
Jianfeng yan's avatar
Jianfeng yan committed
112
113
114
    }
    else if(strcmp(argv[1], "reduce") == 0)
    {
Chao Liu's avatar
Chao Liu committed
115
        pass = profile_reduce(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
116
117
118
    }
    else if(strcmp(argv[1], "conv2d_bwd_weight") == 0)
    {
Chao Liu's avatar
Chao Liu committed
119
        pass = profile_conv_bwd_weight(argc, argv);
Jianfeng yan's avatar
Jianfeng yan committed
120
    }
121
122
    else
    {
Chao Liu's avatar
clean  
Chao Liu committed
123
        print_help_message();
124
    }
Chao Liu's avatar
Chao Liu committed
125
126

    return pass ? 0 : 1;
127
}