"experiments/vscode:/vscode.git/clone" did not exist on "d251cb62f45bfa72a0cf64418a9c2c2a61b962ee"
profiler.cpp 4.37 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
int profile_gemm_bias_2d(int, char*[]);
Chao Liu's avatar
Chao Liu committed
11
12
int profile_gemm_bias_relu(int, char*[]);
int profile_gemm_bias_relu_add(int, char*[]);
Chao Liu's avatar
Chao Liu committed
13
14
15
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
16
int profile_conv_fwd(int, char*[]);
Chao Liu's avatar
Chao Liu committed
17
18
19
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*[]);
20
int profile_convnd_bwd_data(int, char*[], int);
21
int profile_reduce(int, char*[]);
22
int profile_conv_bwd_weight(int, char*[]);
23
int profile_batched_gemm_reduce(int, char*[]);
Chao Liu's avatar
Chao Liu committed
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
}
47
48
49

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

        return 0;
    }

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

        return 0;
134
    }
135
}