CMakeLists.txt 11.5 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")
Illia Silin's avatar
Illia Silin committed
103
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx908:xnack+ gfx908:xnack- gfx90a:xnack+ gfx90a:xnack- gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx950)
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
        endif()
    endforeach()
Illia Silin's avatar
Illia Silin committed
172

173
    foreach(source IN LISTS ARGN)
174
        if(NOT TEST_TARGETS MATCHES "gfx9" AND source MATCHES "xdl")
175
176
177
178
            message("removing xdl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
Illia Silin's avatar
Illia Silin committed
179
180
181
182
183
184
185
186

    foreach(source IN LISTS ARGN)
    if(NOT TEST_TARGETS MATCHES "gfx95" AND source MATCHES "mx_")
        message("removing microscaling test ${source} ")
        list(REMOVE_ITEM ARGN "${source}")
    endif()
    endforeach()

187
    foreach(source IN LISTS ARGN)
188
	if(NOT TEST_TARGETS MATCHES "gfx11" AND NOT TEST_TARGETS MATCHES "gfx12" AND source MATCHES "wmma")
189
190
            message("removing wmma test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
191
192
        endif()
    endforeach()
Illia Silin's avatar
Illia Silin committed
193

194
195
    #only continue if there are some source files left on the list
    if(ARGN)
196
        if(ARGN MATCHES "_xdl")
197
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx1030 gfx1100 gfx1101 gfx1102 gfx1103 gfx1200 gfx1201 gfx10.3-generic gfx11-generic gfx12-generic)
198
        elseif(ARGN MATCHES "_wmma")
Illia Silin's avatar
Illia Silin committed
199
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx908:xnack+ gfx908:xnack- gfx90a:xnack+ gfx90a:xnack- gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx950)
200
        elseif(ARGN MATCHES "_smfmac")
201
             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)
Illia Silin's avatar
Illia Silin committed
202
203
        elseif(ARGN MATCHES "_mx") #only build mx example for gfx950
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx906:xnack- gfx908:xnack+ gfx908:xnack- gfx90a:xnack+ gfx90a:xnack- gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1100 gfx1101 gfx1102 gfx1103 gfx1200 gfx1201 gfx10.3-generic gfx11-generic gfx12-generic)
204
205
        endif()
        set_source_files_properties(${ARGN} PROPERTIES LANGUAGE HIP)
206
        add_executable(${TEST_NAME} ${ARGN})
207
        set_property(TARGET ${TEST_NAME} PROPERTY HIP_ARCHITECTURES ${TEST_TARGETS} )
208
209
210
211
212
        add_dependencies(tests ${TEST_NAME})
        add_dependencies(check ${TEST_NAME})

        # suppress gtest warnings
        target_compile_options(${TEST_NAME} PRIVATE -Wno-global-constructors -Wno-undef)
213
        target_link_libraries(${TEST_NAME} PRIVATE gtest_main getopt::getopt)
214
215
216
217
218
        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}")
219
    set(result ${result} PARENT_SCOPE)
220
221
222
223
224
225
226
227
228
    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()
229
endfunction()
230

231
add_compile_options(-Wno-c++20-extensions)
232
add_subdirectory(ck_tile)
Chao Liu's avatar
Chao Liu committed
233
234
235
236
237
add_subdirectory(magic_number_division)
add_subdirectory(space_filling_curve)
add_subdirectory(conv_util)
add_subdirectory(reference_conv_fwd)
add_subdirectory(gemm)
238
add_subdirectory(gemm_add)
239
add_subdirectory(gemm_layernorm)
Chao Liu's avatar
Chao Liu committed
240
add_subdirectory(gemm_split_k)
241
add_subdirectory(gemm_universal)
Chao Liu's avatar
Chao Liu committed
242
243
add_subdirectory(gemm_reduce)
add_subdirectory(batched_gemm)
244
add_subdirectory(batched_gemm_reduce)
Anthony Chang's avatar
Anthony Chang committed
245
add_subdirectory(batched_gemm_gemm)
Anthony Chang's avatar
Anthony Chang committed
246
add_subdirectory(batched_gemm_softmax_gemm)
247
add_subdirectory(batched_gemm_softmax_gemm_permute)
Chao Liu's avatar
Chao Liu committed
248
add_subdirectory(grouped_gemm)
249
add_subdirectory(reduce)
250
add_subdirectory(convnd_fwd)
JD's avatar
JD committed
251
add_subdirectory(convnd_bwd_data)
252
add_subdirectory(grouped_convnd_fwd)
253
add_subdirectory(grouped_convnd_bwd_weight)
254
add_subdirectory(block_to_ctile_map)
255
add_subdirectory(softmax)
rocking's avatar
rocking committed
256
add_subdirectory(normalization_fwd)
257
add_subdirectory(normalization_bwd_data)
258
add_subdirectory(normalization_bwd_gamma_beta)
Adam Osewski's avatar
Adam Osewski committed
259
add_subdirectory(data_type)
260
add_subdirectory(elementwise_normalization)
261
add_subdirectory(batchnorm)
262
add_subdirectory(contraction)
263
add_subdirectory(pool)
264
add_subdirectory(batched_gemm_multi_d)
265
add_subdirectory(grouped_convnd_bwd_data)
266
add_subdirectory(conv_tensor_rearrange)
arai713's avatar
arai713 committed
267
add_subdirectory(transpose)
arai713's avatar
arai713 committed
268
add_subdirectory(permute_scale)
269
add_subdirectory(wrapper)
270
if(SUPPORTED_GPU_TARGETS MATCHES "gfx11")
271
272
    add_subdirectory(wmma_op)
endif()
Illia Silin's avatar
Illia Silin committed
273
if(SUPPORTED_GPU_TARGETS MATCHES "gfx942" OR SUPPORTED_GPU_TARGETS MATCHES "gfx950") # smfmac needs ROCm6.2
274
275
    add_subdirectory(smfmac_op)
endif()
Illia Silin's avatar
Illia Silin committed
276
277
278
if(SUPPORTED_GPU_TARGETS MATCHES "gfx950") 
    add_subdirectory(mx_mfma_op)
endif()
carlushuang's avatar
carlushuang committed
279
add_subdirectory(position_embedding)
280
add_subdirectory(scatter_gather)