CMakeLists.txt 7.29 KB
Newer Older
Umang Yadav's avatar
Umang Yadav committed
1
# ####################################################################################
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# The MIT License (MIT)
#
# Copyright (c) 2015-2022 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
Umang Yadav's avatar
Umang Yadav committed
23
# ####################################################################################
Paul's avatar
Paul committed
24
25
26
27

cmake_policy(SET CMP0057 NEW)

find_package(Threads REQUIRED)
28
rocm_test_link_libraries(Threads::Threads migraphx migraphx_onnx migraphx_tf)
Paul Fultz II's avatar
Paul Fultz II committed
29
rocm_test_include_directories(include)
Paul's avatar
Paul committed
30

31
32
33
34
35
set(MIGRAPHX_DISABLE_LARGE_BUFFER_TESTS Off CACHE BOOL "")
if(MIGRAPHX_DISABLE_LARGE_BUFFER_TESTS)
    add_compile_definitions(MIGRAPHX_DISABLE_LARGE_BUFFER_TESTS)
endif()

36
file(GLOB TESTS CONFIGURE_DEPENDS *.cpp)
Paul's avatar
Paul committed
37
38
39

foreach(TEST ${TESTS})
    get_filename_component(BASE_NAME ${TEST} NAME_WE)
Paul Fultz II's avatar
Paul Fultz II committed
40
    rocm_add_test_executable(test_${BASE_NAME} ${TEST})
Paul's avatar
Paul committed
41
    rocm_clang_tidy_check(test_${BASE_NAME})
Paul's avatar
Paul committed
42
endforeach()
Paul's avatar
Paul committed
43

Paul's avatar
Paul committed
44
if(MIGRAPHX_ENABLE_GPU)
Artur Wojcik's avatar
Artur Wojcik committed
45
46
47
48
49
50
51
52
53
54
55
56
    set(GPU_TESTS
        gpu/adjust_allocation.cpp
        gpu/context_serialize.cpp
        gpu/hip.cpp
        gpu/jit.cpp
        gpu/literal.cpp
        gpu/manage_host_buffer.cpp
        gpu/mlir.cpp
        gpu/pack_args.cpp
        gpu/pack_int8_args.cpp
        gpu/quantization.cpp
        gpu/stream_sync.cpp)
Paul's avatar
Paul committed
57

Paul's avatar
Paul committed
58
    foreach(TEST ${GPU_TESTS})
Paul's avatar
Paul committed
59
        get_filename_component(BASE_NAME ${TEST} NAME_WE)
Paul Fultz II's avatar
Paul Fultz II committed
60
        rocm_add_test_executable(test_gpu_${BASE_NAME} ${TEST})
Paul's avatar
Paul committed
61
        rocm_clang_tidy_check(test_gpu_${BASE_NAME})
Umang Yadav's avatar
Umang Yadav committed
62
63
        set_tests_properties(test_gpu_${BASE_NAME} PROPERTIES
            COST 10
Paul's avatar
Paul committed
64
65
            RESOURCE_LOCK gpu
        )
Artur Wojcik's avatar
Artur Wojcik committed
66
67
68
69
70
        if(WIN32)
            target_include_directories(test_gpu_${BASE_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src/targets/gpu/kernels)
        else()
            target_link_libraries(test_gpu_${BASE_NAME} migraphx_kernels)
        endif()
71
72
73
        if(MIGRAPHX_USE_HIPRTC)
        target_compile_definitions(test_gpu_${BASE_NAME} PUBLIC -DMIGRAPHX_USE_HIPRTC)
        endif()
Artur Wojcik's avatar
Artur Wojcik committed
74
        target_link_libraries(test_gpu_${BASE_NAME} migraphx_gpu)
Paul's avatar
Paul committed
75
76
    endforeach()
endif()
Scott Thornton's avatar
Scott Thornton committed
77

varunsh's avatar
varunsh committed
78
if(MIGRAPHX_ENABLE_FPGA)
Artur Wojcik's avatar
Artur Wojcik committed
79
80
81
    set(FPGA_TESTS
            fpga/get_target_assignments.cpp
            fpga/test_compile.cpp)
varunsh's avatar
varunsh committed
82
83
84

    foreach(TEST ${FPGA_TESTS})
        get_filename_component(BASE_NAME ${TEST} NAME_WE)
Paul Fultz II's avatar
Paul Fultz II committed
85
        rocm_add_test_executable(test_fpga_${BASE_NAME} ${TEST})
varunsh's avatar
varunsh committed
86
        rocm_clang_tidy_check(test_fpga_${BASE_NAME})
Umang Yadav's avatar
Umang Yadav committed
87
88
        set_tests_properties(test_fpga_${BASE_NAME} PROPERTIES
            COST 10
varunsh's avatar
varunsh committed
89
90
91
92
93
94
            RESOURCE_LOCK fpga
        )
        target_link_libraries(test_fpga_${BASE_NAME} migraphx_fpga)
    endforeach()
endif()

Paul's avatar
Paul committed
95
# Onnx test
Paul's avatar
Paul committed
96
set(TEST_ONNX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/onnx)
Artur Wojcik's avatar
Artur Wojcik committed
97
98
99
100
set(ONNX_TESTS
    onnx/onnx_rnn_test.cpp
    onnx/onnx_test.cpp
    onnx/verify_onnx.cpp)
Umang Yadav's avatar
Umang Yadav committed
101

102
103
foreach(ONNX_TEST ${ONNX_TESTS})
    get_filename_component(BASE_NAME ${ONNX_TEST} NAME_WE)
104
    set(TEST_NAME test_${BASE_NAME})
105
    add_executable(${TEST_NAME} ${ONNX_TEST})
106
    rocm_clang_tidy_check(${TEST_NAME})
107
    target_link_libraries(${TEST_NAME} migraphx_onnx migraphx_ref)
108
    target_include_directories(${TEST_NAME} PUBLIC include)
Umang Yadav's avatar
Umang Yadav committed
109
    add_test(NAME ${TEST_NAME} COMMAND $<TARGET_FILE:${TEST_NAME}> WORKING_DIRECTORY ${TEST_ONNX_DIR})
Paul Fultz II's avatar
Paul Fultz II committed
110
    rocm_mark_as_test(${TEST_NAME})
111
endforeach()
Paul's avatar
Paul committed
112

113
# tf test
kahmed10's avatar
kahmed10 committed
114
set(TEST_TF_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tf)
115
add_executable(test_tf tf/tf_test.cpp)
Paul Fultz II's avatar
Paul Fultz II committed
116
rocm_mark_as_test(test_tf)
117
rocm_clang_tidy_check(test_tf)
118
target_link_libraries(test_tf migraphx_tf)
119
target_include_directories(test_tf PUBLIC include)
Umang Yadav's avatar
Umang Yadav committed
120
add_test(NAME test_tf COMMAND $<TARGET_FILE:test_tf> WORKING_DIRECTORY ${TEST_TF_DIR})
121

Paul Fultz II's avatar
Paul Fultz II committed
122
add_subdirectory(api)
123
add_subdirectory(verify)
124
add_subdirectory(ref)
Umang Yadav's avatar
Umang Yadav committed
125

126
if(MIGRAPHX_ENABLE_PYTHON)
Umang Yadav's avatar
Umang Yadav committed
127
    add_subdirectory(py)
128
endif()
Paul's avatar
Paul committed
129

130
131
132
# multitarget test
if(MIGRAPHX_ENABLE_GPU AND MIGRAPHX_ENABLE_CPU AND MIGRAPHX_ENABLE_FPGA)
    set(TEST_MULTI_TARGET_DIR ${CMAKE_CURRENT_SOURCE_DIR}/multi_target)
133
    file(GLOB MULTI_TARGET_TESTS CONFIGURE_DEPENDS ${TEST_MULTI_TARGET_DIR}/*.cpp)
134
135
136
137
138
139
140
141
142

    foreach(MULTI_TARGET_TEST ${MULTI_TARGET_TESTS})
        get_filename_component(BASE_NAME ${MULTI_TARGET_TEST} NAME_WE)
        set(TEST_NAME test_${BASE_NAME})
        add_executable(${TEST_NAME} ${MULTI_TARGET_TEST})
        rocm_clang_tidy_check(${TEST_NAME})
        target_link_libraries(${TEST_NAME} migraphx migraphx_onnx migraphx_tf migraphx_all_targets)
        target_include_directories(${TEST_NAME} PUBLIC include)
        add_test(NAME ${TEST_NAME} COMMAND $<TARGET_FILE:${TEST_NAME}> WORKING_DIRECTORY ${TEST_MULTI_TARGET_DIR})
Paul Fultz II's avatar
Paul Fultz II committed
143
        rocm_mark_as_test(${TEST_NAME})
144
145
146
147
    endforeach()
endif()


Paul's avatar
Paul committed
148
function(test_header NAME HEADER)
149
150
151
    file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/header-main-include-${NAME}.cpp "
#include <${HEADER}>
int main() {}\n"
Paul's avatar
Paul committed
152
    )
153
154
155
156
157
158
    file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/header-static-include-${NAME}.cpp "
#include <${HEADER}>
#if defined(min) || defined(max) || defined(near) || defined(far)
#error \"Do not include windows.h in header files\"
#endif
\n"
Paul's avatar
Paul committed
159
    )
Paul Fultz II's avatar
Paul Fultz II committed
160
    rocm_add_test_executable(${NAME}
Umang Yadav's avatar
Umang Yadav committed
161
        ${CMAKE_CURRENT_BINARY_DIR}/header-main-include-${NAME}.cpp
Paul's avatar
Paul committed
162
163
164
165
        ${CMAKE_CURRENT_BINARY_DIR}/header-static-include-${NAME}.cpp
    )
endfunction()

166
function(test_headers PREFIX)
167
    file(GLOB HEADERS CONFIGURE_DEPENDS ${ARGN})
Artur Wojcik's avatar
Artur Wojcik committed
168
169
170
171
    if(NOT MIGRAPHX_USE_COMPOSABLEKERNEL)
        list(REMOVE_ITEM HEADERS
              ${CMAKE_SOURCE_DIR}/src/targets/gpu/include/migraphx/gpu/ck.hpp)
    endif()
172
173
174
175
176
    foreach(HEADER ${HEADERS})
        file(RELATIVE_PATH HEADER_REL ${CMAKE_SOURCE_DIR} ${HEADER})
        string(MAKE_C_IDENTIFIER ${HEADER_REL} TEST_NAME)
        get_filename_component(BASE_NAME ${HEADER} NAME_WE)
        test_header(header_${TEST_NAME} ${PREFIX}/${BASE_NAME}.hpp)
177
        target_link_libraries(header_${TEST_NAME} migraphx migraphx_onnx migraphx_tf migraphx_all_targets)
178
179
    endforeach()
endfunction()
Paul's avatar
Paul committed
180

Paul's avatar
Paul committed
181
test_headers(migraphx ${CMAKE_SOURCE_DIR}/src/include/migraphx/*.hpp)
182
test_headers(migraphx/ref ${CMAKE_SOURCE_DIR}/src/targets/ref/include/migraphx/ref/*.hpp)
Umang Yadav's avatar
Umang Yadav committed
183

Paul's avatar
Paul committed
184
if(MIGRAPHX_ENABLE_GPU)
Paul Fultz II's avatar
Paul Fultz II committed
185
    test_headers(migraphx/gpu HEADERS ${CMAKE_SOURCE_DIR}/src/targets/gpu/include/migraphx/gpu/*.hpp DEPENDS migraphx_gpu)
186
endif()
187
if(MIGRAPHX_ENABLE_CPU)
Paul Fultz II's avatar
Paul Fultz II committed
188
    test_headers(migraphx/cpu HEADERS ${CMAKE_SOURCE_DIR}/src/targets/cpu/include/migraphx/cpu/*.hpp migraphx_cpu)
189
190
endif()
if(MIGRAPHX_ENABLE_FPGA)
Paul Fultz II's avatar
Paul Fultz II committed
191
    test_headers(migraphx/fpga HEADERS ${CMAKE_SOURCE_DIR}/src/targets/fpga/include/migraphx/fpga/*.hpp migraphx_fpga)
192
193
endif()

194