CMakeLists.txt 10.9 KB
Newer Older
1
include_directories(BEFORE
Adam Osewski's avatar
Adam Osewski committed
2
    ${PROJECT_SOURCE_DIR}/
3
    ${PROJECT_SOURCE_DIR}/profiler/include
4
5
)

6
include(gtest)
JD's avatar
JD committed
7

8
9
add_custom_target(tests)

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# list of tests that are labelled as REGRESSION_TEST for make regression (runtime more than 30 seconds)
# all other tests are labelled as SMOKE_TEST
set(REGRESSION_TESTS
    test_gemm_standalone_xdl_fp16
    test_gemm_fp16
    test_gemm_splitk
    test_batched_gemm
    test_gemm_universal
    test_batched_gemm_softmax_gemm_fp16
    test_batched_gemm_softmax_gemm_permute_fp16
    test_batched_gemm_bias_softmax_gemm_permute_fp16
    test_batched_gemm_softmax_gemm_permute_bf16
    test_batched_gemm_bias_softmax_gemm_permute_bf16
    test_grouped_gemm_splitk
    test_reduce_no_index
    test_reduce_with_index
    test_convnd_fwd
    test_convnd_bwd_data
    test_grouped_convnd_fwd
    test_grouped_convnd_bwd_weight
    test_softmax_rank3
    test_softmax_rank4
    test_batchnorm_fwd_rank_4
    test_batchnorm_bwd_rank_4
    test_grouped_convnd_bwd_data_xdl
    test_conv_tensor_rearrange
)

Chao Liu's avatar
Chao Liu committed
38
39
function(add_test_executable TEST_NAME)
    message("adding test ${TEST_NAME}")
40
41
    set(result 1)
    if(DEFINED DTYPES)
42
43
        foreach(source IN LISTS ARGN)
            set(test 0)
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
            if((source MATCHES "_fp16" OR source MATCHES "_f16") AND NOT "fp16" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_fp32" OR source MATCHES "_f32") AND NOT "fp32" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_fp64" OR source MATCHES "_f64") AND NOT "fp64" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_fp8" OR source MATCHES "_f8") AND NOT "fp8" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_bf8" OR source MATCHES "_bf8") AND NOT "bf8" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_bf16" OR source MATCHES "_b16") AND NOT "bf16" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_int8" OR source MATCHES "_i8") AND NOT "int8" IN_LIST DTYPES)
                set(test 1)
            endif()
65
66
67
            if(test EQUAL 1)
                message("removing test ${source} ")
                list(REMOVE_ITEM ARGN "${source}")
68
69
            endif()
        endforeach()
70
    endif()
71

72
    set(TEST_TARGETS ${SUPPORTED_GPU_TARGETS})
73

74
75
76
77
78
79
    foreach(source IN LISTS ARGN)
        if(NOT DEFINED DPP_KERNELS AND source MATCHES "_dpp")
            message("removing dpp test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
80
    foreach(source IN LISTS ARGN)
81
82
83
84
85
        if(NOT DEFINED DL_KERNELS AND source MATCHES "_dl")
            message("removing dl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
86
    foreach(source IN LISTS ARGN)
87
        if(NOT TEST_TARGETS MATCHES "gfx9" AND source MATCHES "xdl")
88
89
90
91
92
            message("removing xdl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
    foreach(source IN LISTS ARGN)
93
	if(NOT TEST_TARGETS MATCHES "gfx11" AND NOT TEST_TARGETS MATCHES "gfx12" AND source MATCHES "wmma")
94
95
96
97
            message("removing wmma test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
98
99
    #only continue if there are some source files left on the list
    if(ARGN)
100
        if(ARGN MATCHES "_xdl")
101
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx1030 gfx1100 gfx1101 gfx1102 gfx1103 gfx1200 gfx1201 gfx10.3-generic gfx11-generic gfx12-generic)
102
        elseif(ARGN MATCHES "_wmma")
103
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx908:xnack+ gfx908:xnack- gfx90a:xnack+ gfx90a:xnack- gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030)
104
        elseif(ARGN MATCHES "_smfmac")
105
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx1030 gfx1100 gfx1101 gfx1102 gfx1103 gfx908 gfx90a gfx1200 gfx1201 gfx10.3-generic gfx11-generic gfx12-generic)
106
107
        endif()
        set_source_files_properties(${ARGN} PROPERTIES LANGUAGE HIP)
108
        add_executable(${TEST_NAME} ${ARGN})
109
        set_property(TARGET ${TEST_NAME} PROPERTY HIP_ARCHITECTURES ${TEST_TARGETS} )
110
        target_link_libraries(${TEST_NAME} PRIVATE getopt::getopt)
111
112
113
114
115
116
117
        add_test(NAME ${TEST_NAME} COMMAND $<TARGET_FILE:${TEST_NAME}>)
        add_dependencies(tests ${TEST_NAME})
        add_dependencies(check ${TEST_NAME})
        rocm_install(TARGETS ${TEST_NAME} COMPONENT tests)
        set(result 0)
    endif()
    #message("add_test returns ${result}")
118
    set(result ${result} PARENT_SCOPE)
119
120
121
122
123
124
125
126
127
    if(result EQUAL 0 AND NOT "${TEST_NAME}" IN_LIST REGRESSION_TESTS)
        message("adding to SMOKE TEST FILTER ${TEST_NAME}")
        set_tests_properties(${TEST_NAME} PROPERTIES LABELS "SMOKE_TEST")
        add_dependencies(smoke ${TEST_NAME})
    elseif(result EQUAL 0 AND "${TEST_NAME}" IN_LIST REGRESSION_TESTS)
        message("Adding to REGRESSION TEST FILTER ${TEST_NAME}")
        set_tests_properties(${TEST_NAME} PROPERTIES LABELS "REGRESSION_TEST")
        add_dependencies(regression ${TEST_NAME})
    endif()
128
endfunction()
129
130
131

function(add_gtest_executable TEST_NAME)
    message("adding gtest ${TEST_NAME}")
132
133
    set(result 1)
    if(DEFINED DTYPES)
134
135
        foreach(source IN LISTS ARGN)
            set(test 0)
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
            if((source MATCHES "_fp16" OR source MATCHES "_f16") AND NOT "fp16" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_fp32" OR source MATCHES "_f32") AND NOT "fp32" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_fp64" OR source MATCHES "_f64") AND NOT "fp64" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_fp8" OR source MATCHES "_f8") AND NOT "fp8" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_bf8" OR source MATCHES "_bf8") AND NOT "bf8" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_bf16" OR source MATCHES "_b16") AND NOT "bf16" IN_LIST DTYPES)
                set(test 1)
            endif()
            if((source MATCHES "_int8" OR source MATCHES "_i8") AND NOT "int8" IN_LIST DTYPES)
                set(test 1)
            endif()
157
158
159
            if(test EQUAL 1)
                message("removing gtest ${source} ")
                list(REMOVE_ITEM ARGN "${source}")
160
161
162
            endif()
        endforeach()
    endif()
163

164
    set(TEST_TARGETS ${SUPPORTED_GPU_TARGETS})
165

166
167
168
169
    foreach(source IN LISTS ARGN)
        if(NOT DEFINED DL_KERNELS AND source MATCHES "_dl")
            message("removing dl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
170
171
172
        endif()
    endforeach()
    foreach(source IN LISTS ARGN)
173
        if(NOT TEST_TARGETS MATCHES "gfx9" AND source MATCHES "xdl")
174
175
176
177
178
            message("removing xdl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
    foreach(source IN LISTS ARGN)
179
	if(NOT TEST_TARGETS MATCHES "gfx11" AND NOT TEST_TARGETS MATCHES "gfx12" AND source MATCHES "wmma")
180
181
            message("removing wmma test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
182
183
184
185
        endif()
    endforeach()
    #only continue if there are some source files left on the list
    if(ARGN)
186
        if(ARGN MATCHES "_xdl")
187
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx1030 gfx1100 gfx1101 gfx1102 gfx1103 gfx1200 gfx1201 gfx10.3-generic gfx11-generic gfx12-generic)
188
        elseif(ARGN MATCHES "_wmma")
189
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx908:xnack+ gfx908:xnack- gfx90a:xnack+ gfx90a:xnack- gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030)
190
        elseif(ARGN MATCHES "_smfmac")
191
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx1030 gfx1100 gfx1101 gfx1102 gfx1103 gfx908 gfx90a gfx1200 gfx1201 gfx10.3-generic gfx11-generic gfx12-generic)
192
193
        endif()
        set_source_files_properties(${ARGN} PROPERTIES LANGUAGE HIP)
194
        add_executable(${TEST_NAME} ${ARGN})
195
        set_property(TARGET ${TEST_NAME} PROPERTY HIP_ARCHITECTURES ${TEST_TARGETS} )
196
197
198
199
200
        add_dependencies(tests ${TEST_NAME})
        add_dependencies(check ${TEST_NAME})

        # suppress gtest warnings
        target_compile_options(${TEST_NAME} PRIVATE -Wno-global-constructors -Wno-undef)
201
        target_link_libraries(${TEST_NAME} PRIVATE gtest_main getopt::getopt)
202
203
204
205
206
        add_test(NAME ${TEST_NAME} COMMAND $<TARGET_FILE:${TEST_NAME}>)
        rocm_install(TARGETS ${TEST_NAME} COMPONENT tests)
        set(result 0)
    endif()
    #message("add_gtest returns ${result}")
207
    set(result ${result} PARENT_SCOPE)
208
209
210
211
212
213
214
215
216
    if(result EQUAL 0 AND NOT "${TEST_NAME}" IN_LIST REGRESSION_TESTS)
        #message("adding to smoke test FILTER ${TEST_NAME}")
        set_tests_properties(${TEST_NAME} PROPERTIES LABELS "SMOKE_TEST")
        add_dependencies(smoke ${TEST_NAME})
    elseif(result EQUAL 0 AND "${TEST_NAME}" IN_LIST REGRESSION_TESTS)
        #message("Adding to REGRESSION TEST FILTER ${TEST_NAME}")
        set_tests_properties(${TEST_NAME} PROPERTIES LABELS "REGRESSION_TEST")
        add_dependencies(regression ${TEST_NAME})
    endif()
217
endfunction()
218

219
add_compile_options(-Wno-c++20-extensions)
220
add_subdirectory(ck_tile)
Chao Liu's avatar
Chao Liu committed
221
222
223
224
225
add_subdirectory(magic_number_division)
add_subdirectory(space_filling_curve)
add_subdirectory(conv_util)
add_subdirectory(reference_conv_fwd)
add_subdirectory(gemm)
226
add_subdirectory(gemm_add)
227
add_subdirectory(gemm_layernorm)
Chao Liu's avatar
Chao Liu committed
228
add_subdirectory(gemm_split_k)
229
add_subdirectory(gemm_universal)
Chao Liu's avatar
Chao Liu committed
230
231
add_subdirectory(gemm_reduce)
add_subdirectory(batched_gemm)
232
add_subdirectory(batched_gemm_reduce)
Anthony Chang's avatar
Anthony Chang committed
233
add_subdirectory(batched_gemm_gemm)
Anthony Chang's avatar
Anthony Chang committed
234
add_subdirectory(batched_gemm_softmax_gemm)
235
add_subdirectory(batched_gemm_softmax_gemm_permute)
Chao Liu's avatar
Chao Liu committed
236
add_subdirectory(grouped_gemm)
237
add_subdirectory(reduce)
238
add_subdirectory(convnd_fwd)
JD's avatar
JD committed
239
add_subdirectory(convnd_bwd_data)
240
add_subdirectory(grouped_convnd_fwd)
241
add_subdirectory(grouped_convnd_bwd_weight)
242
add_subdirectory(block_to_ctile_map)
243
add_subdirectory(softmax)
rocking's avatar
rocking committed
244
add_subdirectory(normalization_fwd)
245
add_subdirectory(normalization_bwd_data)
246
add_subdirectory(normalization_bwd_gamma_beta)
Adam Osewski's avatar
Adam Osewski committed
247
add_subdirectory(data_type)
248
add_subdirectory(elementwise_normalization)
249
add_subdirectory(batchnorm)
250
add_subdirectory(contraction)
251
add_subdirectory(pool)
252
add_subdirectory(batched_gemm_multi_d)
253
add_subdirectory(grouped_convnd_bwd_data)
254
add_subdirectory(conv_tensor_rearrange)
arai713's avatar
arai713 committed
255
add_subdirectory(transpose)
arai713's avatar
arai713 committed
256
add_subdirectory(permute_scale)
257
add_subdirectory(wrapper)
258
if(SUPPORTED_GPU_TARGETS MATCHES "gfx11")
259
260
    add_subdirectory(wmma_op)
endif()
261
if(SUPPORTED_GPU_TARGETS MATCHES "gfx942" AND CK_HIP_VERSION_MAJOR GREATER_EQUAL 6 AND CK_HIP_VERSION_MINOR GREATER_EQUAL 2) # smfmac needs ROCm6.2
262
263
    add_subdirectory(smfmac_op)
endif()
carlushuang's avatar
carlushuang committed
264
add_subdirectory(position_embedding)
265
add_subdirectory(scatter_gather)