CMakeLists.txt 7.92 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)

Chao Liu's avatar
Chao Liu committed
10
11
function(add_test_executable TEST_NAME)
    message("adding test ${TEST_NAME}")
12
13
    set(result 1)
    if(DEFINED DTYPES)
14
15
        foreach(source IN LISTS ARGN)
            set(test 0)
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
            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()
37
38
39
            if(test EQUAL 1)
                message("removing test ${source} ")
                list(REMOVE_ITEM ARGN "${source}")
40
41
            endif()
        endforeach()
42
    endif()
43
44
45
46
47
48
49

    if(INSTANCES_ONLY)
        set(TEST_TARGETS ${DEFAULT_GPU_TARGETS})
    else()
        set(TEST_TARGETS ${GPU_TARGETS})
    endif()

50
    foreach(source IN LISTS ARGN)
51
52
53
54
55
        if(NOT DEFINED DL_KERNELS AND source MATCHES "_dl")
            message("removing dl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
56
    foreach(source IN LISTS ARGN)
57
        if(NOT TEST_TARGETS MATCHES "gfx9" AND source MATCHES "xdl")
58
59
60
61
62
            message("removing xdl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
    foreach(source IN LISTS ARGN)
illsilin's avatar
illsilin committed
63
	if(NOT GPU_TARGETS MATCHES "gfx11" AND NOT GPU_TARGETS MATCHES "gfx12" AND source MATCHES "wmma")
64
65
66
67
            message("removing wmma test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
68
69
    #only continue if there are some source files left on the list
    if(ARGN)
70
71
72
73
74
75
        if(ARGN MATCHES "_xdl")
             list(REMOVE_ITEM TEST_TARGETS gfx1030 gfx1100 gfx1101 gfx1102 gfx1103)
        elseif(ARGN MATCHES "_wmma")
             list(REMOVE_ITEM TEST_TARGETS gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030)
        endif()
        set_source_files_properties(${ARGN} PROPERTIES LANGUAGE HIP)
76
        add_executable(${TEST_NAME} ${ARGN})
77
        set_property(TARGET ${TEST_NAME} PROPERTY HIP_ARCHITECTURES ${TEST_TARGETS} )
78
        target_link_libraries(${TEST_NAME} PRIVATE getopt::getopt)
79
80
81
82
83
84
85
        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}")
86
    set(result ${result} PARENT_SCOPE)
87
endfunction()
88
89
90

function(add_gtest_executable TEST_NAME)
    message("adding gtest ${TEST_NAME}")
91
92
    set(result 1)
    if(DEFINED DTYPES)
93
94
        foreach(source IN LISTS ARGN)
            set(test 0)
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
            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()
116
117
118
            if(test EQUAL 1)
                message("removing gtest ${source} ")
                list(REMOVE_ITEM ARGN "${source}")
119
120
121
            endif()
        endforeach()
    endif()
122
123
124
125
126
127
128

    if(INSTANCES_ONLY)
        set(TEST_TARGETS ${DEFAULT_GPU_TARGETS})
    else()
        set(TEST_TARGETS ${GPU_TARGETS})
    endif()

129
130
131
132
133
134
    foreach(source IN LISTS ARGN)
        if(NOT DEFINED DL_KERNELS AND source MATCHES "_dl")
            message("removing dl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
135
    foreach(source IN LISTS ARGN)
136
        if(NOT TEST_TARGETS MATCHES "gfx9" AND source MATCHES "xdl")
137
138
139
140
141
            message("removing xdl test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
        endif()
    endforeach()
    foreach(source IN LISTS ARGN)
illsilin's avatar
illsilin committed
142
	if(NOT GPU_TARGETS MATCHES "gfx11" AND NOT GPU_TARGETS MATCHES "gfx12" AND source MATCHES "wmma")
143
144
            message("removing wmma test ${source} ")
            list(REMOVE_ITEM ARGN "${source}")
145
146
147
148
        endif()
    endforeach()
    #only continue if there are some source files left on the list
    if(ARGN)
149
150
151
152
153
154
        if(ARGN MATCHES "_xdl")
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx1030 gfx1100 gfx1101 gfx1102 gfx1103)
        elseif(ARGN MATCHES "_wmma")
             list(REMOVE_ITEM TEST_TARGETS gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030)
        endif()
        set_source_files_properties(${ARGN} PROPERTIES LANGUAGE HIP)
155
        add_executable(${TEST_NAME} ${ARGN})
156
        set_property(TARGET ${TEST_NAME} PROPERTY HIP_ARCHITECTURES ${TEST_TARGETS} )
157
158
159
160
161
        add_dependencies(tests ${TEST_NAME})
        add_dependencies(check ${TEST_NAME})

        # suppress gtest warnings
        target_compile_options(${TEST_NAME} PRIVATE -Wno-global-constructors -Wno-undef)
162
        target_link_libraries(${TEST_NAME} PRIVATE gtest_main getopt::getopt)
163
164
165
166
167
        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}")
168
    set(result ${result} PARENT_SCOPE)
169
endfunction()
170

171
add_compile_options(-Wno-c++20-extensions)
Chao Liu's avatar
Chao Liu committed
172
173
174
175
176
add_subdirectory(magic_number_division)
add_subdirectory(space_filling_curve)
add_subdirectory(conv_util)
add_subdirectory(reference_conv_fwd)
add_subdirectory(gemm)
177
add_subdirectory(gemm_add)
178
add_subdirectory(gemm_layernorm)
Chao Liu's avatar
Chao Liu committed
179
add_subdirectory(gemm_split_k)
180
add_subdirectory(gemm_universal)
Chao Liu's avatar
Chao Liu committed
181
182
add_subdirectory(gemm_reduce)
add_subdirectory(batched_gemm)
183
add_subdirectory(batched_gemm_reduce)
Anthony Chang's avatar
Anthony Chang committed
184
add_subdirectory(batched_gemm_gemm)
Anthony Chang's avatar
Anthony Chang committed
185
add_subdirectory(batched_gemm_softmax_gemm)
186
add_subdirectory(batched_gemm_softmax_gemm_permute)
Chao Liu's avatar
Chao Liu committed
187
add_subdirectory(grouped_gemm)
188
add_subdirectory(reduce)
189
add_subdirectory(convnd_fwd)
JD's avatar
JD committed
190
add_subdirectory(convnd_bwd_data)
191
add_subdirectory(grouped_convnd_fwd)
192
add_subdirectory(grouped_convnd_bwd_weight)
193
add_subdirectory(block_to_ctile_map)
194
add_subdirectory(softmax)
rocking's avatar
rocking committed
195
add_subdirectory(normalization_fwd)
196
add_subdirectory(normalization_bwd_data)
197
add_subdirectory(normalization_bwd_gamma_beta)
Adam Osewski's avatar
Adam Osewski committed
198
add_subdirectory(data_type)
199
add_subdirectory(elementwise_normalization)
200
add_subdirectory(batchnorm)
201
add_subdirectory(contraction)
202
add_subdirectory(pool)
203
add_subdirectory(batched_gemm_multi_d)
204
add_subdirectory(grouped_convnd_bwd_data)
205
add_subdirectory(conv_tensor_rearrange)
arai713's avatar
arai713 committed
206
add_subdirectory(transpose)
arai713's avatar
arai713 committed
207
add_subdirectory(permute_scale)
208
add_subdirectory(wrapper)
illsilin's avatar
illsilin committed
209
if(GPU_TARGETS MATCHES "gfx11")
210
211
    add_subdirectory(wmma_op)
endif()
carlushuang's avatar
carlushuang committed
212
add_subdirectory(position_embedding)