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

7
8
#include "profile_convnd_fwd.hpp"

Chao Liu's avatar
Chao Liu committed
9
int profile_gemm(int, char*[]);
10
#if 0
11
int profile_gemm_bias_2d(int, char*[]);
Chao Liu's avatar
Chao Liu committed
12
13
int profile_gemm_bias_relu(int, char*[]);
int profile_gemm_bias_relu_add(int, char*[]);
Chao Liu's avatar
Chao Liu committed
14
15
16
int profile_gemm_reduce(int, char*[]);
int profile_batched_gemm(int, char*[]);
int profile_grouped_gemm(int, char*[]);
Jianfeng Yan's avatar
Jianfeng Yan committed
17
int profile_conv_fwd(int, char*[]);
Chao Liu's avatar
Chao Liu committed
18
19
20
int profile_conv_fwd_bias_relu(int, char*[]);
int profile_conv_fwd_bias_relu_add(int, char*[]);
int profile_conv_fwd_bias_relu_atomic_add(int, char*[]);
21
int profile_convnd_bwd_data(int, char*[], int);
22
int profile_reduce(int, char*[]);
23
int profile_conv_bwd_weight(int, char*[]);
24
int profile_batched_gemm_reduce(int, char*[]);
25
#endif
Chao Liu's avatar
Chao Liu committed
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
int profile_gemm_gelu(int, char*[]);

static void print_helper_message()
{
    // clang-format off
        printf("arg1: tensor operation (gemm: GEMM\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: ForwardConvolution\n"
               "                        conv_fwd_bias_relu: ForwardConvolution+Bias+ReLU\n"
               "                        conv_fwd_bias_relu_add: ForwardConvolution+Bias+ReLU+Add\n"
               "                        conv_fwd_bias_relu_atomic_add: ForwardConvolution+Bias+ReLU+AtomicAdd\n"
               "                        conv1d_bwd_data: BackwardConvolution data 1 dim\n"
               "                        conv2d_bwd_data: BackwardConvolution data 2 dim\n"
               "                        conv3d_bwd_data: BackwardConvolution data 3 dim\n"
               "                        reduce: Reduce\n"
               "                        conv2d_bwd_weight: Backward Weight Convolution 2d\n"
               "                        gemm_gelu: GEMM+GeLU\n");
    // clang-format on
}
49
50
51

int main(int argc, char* argv[])
{
Chao Liu's avatar
Chao Liu committed
52
53
54
55
56
57
58
    if(argc == 1)
    {
        print_helper_message();

        return 0;
    }

59
60
    if(strcmp(argv[1], "gemm") == 0)
    {
Chao Liu's avatar
Chao Liu committed
61
        return profile_gemm(argc, argv);
62
    }
Chao Liu's avatar
Chao Liu committed
63
#if 0
64
65
66
67
    else if(strcmp(argv[1], "gemm_bias_2d") == 0)
    {
        return profile_gemm_bias_2d(argc, argv);
    }
zjing14's avatar
zjing14 committed
68
    else if(strcmp(argv[1], "gemm_bias_relu") == 0)
Chao Liu's avatar
Chao Liu committed
69
70
71
    {
        return profile_gemm_bias_relu(argc, argv);
    }
zjing14's avatar
zjing14 committed
72
    else if(strcmp(argv[1], "gemm_bias_relu_add") == 0)
Chao Liu's avatar
Chao Liu committed
73
74
75
    {
        return profile_gemm_bias_relu_add(argc, argv);
    }
Chao Liu's avatar
Chao Liu committed
76
77
78
79
    else if(strcmp(argv[1], "gemm_reduce") == 0)
    {
        return profile_gemm_reduce(argc, argv);
    }
zjing14's avatar
zjing14 committed
80
81
82
83
    else if(strcmp(argv[1], "batched_gemm") == 0)
    {
        return profile_batched_gemm(argc, argv);
    }
84
85
86
87
    else if(strcmp(argv[1], "batched_gemm_reduce") == 0)
    {
        return profile_batched_gemm_reduce(argc, argv);
    }
Chao Liu's avatar
Chao Liu committed
88
89
    else if(strcmp(argv[1], "grouped_gemm") == 0)
    {
Chao Liu's avatar
Chao Liu committed
90
        return profile_grouped_gemm(argc, argv);
Chao Liu's avatar
Chao Liu committed
91
    }
Chao Liu's avatar
Chao Liu committed
92
    else if(strcmp(argv[1], "conv_fwd") == 0)
93
    {
94
        return ck::profiler::profile_convnd_fwd(argc, argv);
Chao Liu's avatar
Chao Liu committed
95
96
97
98
99
100
101
102
103
104
105
106
    }
    else if(strcmp(argv[1], "conv_fwd_bias_relu") == 0)
    {
        return profile_conv_fwd_bias_relu(argc, argv);
    }
    else if(strcmp(argv[1], "conv_fwd_bias_relu_add") == 0)
    {
        return profile_conv_fwd_bias_relu_add(argc, argv);
    }
    else if(strcmp(argv[1], "conv_fwd_bias_relu_atomic_add") == 0)
    {
        return profile_conv_fwd_bias_relu_atomic_add(argc, argv);
107
    }
108
    else if(strcmp(argv[1], "conv1d_bwd_data") == 0)
109
    {
110
111
112
113
114
115
116
117
118
        return profile_convnd_bwd_data(argc, argv, 1);
    }
    else if(strcmp(argv[1], "conv2d_bwd_data") == 0)
    {
        return profile_convnd_bwd_data(argc, argv, 2);
    }
    else if(strcmp(argv[1], "conv3d_bwd_data") == 0)
    {
        return profile_convnd_bwd_data(argc, argv, 3);
119
    }
120
121
122
123
    else if(strcmp(argv[1], "reduce") == 0)
    {
        return profile_reduce(argc, argv);
    }
124
125
126
127
    else if(strcmp(argv[1], "conv2d_bwd_weight") == 0)
    {
        return profile_conv_bwd_weight(argc, argv);
    }
Chao Liu's avatar
Chao Liu committed
128
129
130
131
132
#endif
    else if(strcmp(argv[1], "gemm_gelu") == 0)
    {
        return profile_gemm_gelu(argc, argv);
    }
133
134
    else
    {
Chao Liu's avatar
Chao Liu committed
135
136
137
        print_helper_message();

        return 0;
138
    }
139
}