CMakeLists.txt 6.76 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)
Paul's avatar
Paul committed
45
    # gpu tests
46
    file(GLOB GPU_TESTS CONFIGURE_DEPENDS gpu/*.cpp)
Paul's avatar
Paul committed
47

Paul's avatar
Paul committed
48
    foreach(TEST ${GPU_TESTS})
Paul's avatar
Paul committed
49
        get_filename_component(BASE_NAME ${TEST} NAME_WE)
Paul Fultz II's avatar
Paul Fultz II committed
50
        rocm_add_test_executable(test_gpu_${BASE_NAME} ${TEST})
Paul's avatar
Paul committed
51
        rocm_clang_tidy_check(test_gpu_${BASE_NAME})
Umang Yadav's avatar
Umang Yadav committed
52
53
        set_tests_properties(test_gpu_${BASE_NAME} PROPERTIES
            COST 10
Paul's avatar
Paul committed
54
55
            RESOURCE_LOCK gpu
        )
56
57
58
        if(MIGRAPHX_USE_HIPRTC)
        target_compile_definitions(test_gpu_${BASE_NAME} PUBLIC -DMIGRAPHX_USE_HIPRTC)
        endif()
Umang Yadav's avatar
Umang Yadav committed
59
        target_link_libraries(test_gpu_${BASE_NAME} migraphx_gpu migraphx_kernels)
Paul's avatar
Paul committed
60
61
    endforeach()
endif()
Scott Thornton's avatar
Scott Thornton committed
62

varunsh's avatar
varunsh committed
63
64
if(MIGRAPHX_ENABLE_FPGA)
    # fpga tests
65
    file(GLOB FPGA_TESTS CONFIGURE_DEPENDS fpga/*.cpp)
varunsh's avatar
varunsh committed
66
67
68

    foreach(TEST ${FPGA_TESTS})
        get_filename_component(BASE_NAME ${TEST} NAME_WE)
Paul Fultz II's avatar
Paul Fultz II committed
69
        rocm_add_test_executable(test_fpga_${BASE_NAME} ${TEST})
varunsh's avatar
varunsh committed
70
        rocm_clang_tidy_check(test_fpga_${BASE_NAME})
Umang Yadav's avatar
Umang Yadav committed
71
72
        set_tests_properties(test_fpga_${BASE_NAME} PROPERTIES
            COST 10
varunsh's avatar
varunsh committed
73
74
75
76
77
78
            RESOURCE_LOCK fpga
        )
        target_link_libraries(test_fpga_${BASE_NAME} migraphx_fpga)
    endforeach()
endif()

Paul's avatar
Paul committed
79
# Onnx test
Paul's avatar
Paul committed
80
set(TEST_ONNX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/onnx)
Umang Yadav's avatar
Umang Yadav committed
81
82
file(GLOB ONNX_TESTS ${TEST_ONNX_DIR}/*.cpp)

83
84
foreach(ONNX_TEST ${ONNX_TESTS})
    get_filename_component(BASE_NAME ${ONNX_TEST} NAME_WE)
85
    set(TEST_NAME test_${BASE_NAME})
86
    add_executable(${TEST_NAME} ${ONNX_TEST})
87
    rocm_clang_tidy_check(${TEST_NAME})
88
    target_link_libraries(${TEST_NAME} migraphx_onnx migraphx_ref)
89
    target_include_directories(${TEST_NAME} PUBLIC include)
Umang Yadav's avatar
Umang Yadav committed
90
    add_test(NAME ${TEST_NAME} COMMAND $<TARGET_FILE:${TEST_NAME}> WORKING_DIRECTORY ${TEST_ONNX_DIR})
Paul Fultz II's avatar
Paul Fultz II committed
91
    rocm_mark_as_test(${TEST_NAME})
92
endforeach()
Paul's avatar
Paul committed
93

94
# tf test
kahmed10's avatar
kahmed10 committed
95
set(TEST_TF_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tf)
96
add_executable(test_tf tf/tf_test.cpp)
Paul Fultz II's avatar
Paul Fultz II committed
97
rocm_mark_as_test(test_tf)
98
rocm_clang_tidy_check(test_tf)
99
target_link_libraries(test_tf migraphx_tf)
100
target_include_directories(test_tf PUBLIC include)
Umang Yadav's avatar
Umang Yadav committed
101
add_test(NAME test_tf COMMAND $<TARGET_FILE:test_tf> WORKING_DIRECTORY ${TEST_TF_DIR})
102

Paul Fultz II's avatar
Paul Fultz II committed
103
add_subdirectory(api)
104
add_subdirectory(verify)
105
add_subdirectory(ref)
Umang Yadav's avatar
Umang Yadav committed
106

107
if(MIGRAPHX_ENABLE_PYTHON)
Umang Yadav's avatar
Umang Yadav committed
108
    add_subdirectory(py)
109
endif()
Paul's avatar
Paul committed
110

111
112
113
# 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)
114
    file(GLOB MULTI_TARGET_TESTS CONFIGURE_DEPENDS ${TEST_MULTI_TARGET_DIR}/*.cpp)
115
116
117
118
119
120
121
122
123

    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
124
        rocm_mark_as_test(${TEST_NAME})
125
126
127
128
    endforeach()
endif()


Paul's avatar
Paul committed
129
function(test_header NAME HEADER)
130
131
132
    file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/header-main-include-${NAME}.cpp "
#include <${HEADER}>
int main() {}\n"
Paul's avatar
Paul committed
133
    )
134
135
136
137
138
139
    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
140
    )
Paul Fultz II's avatar
Paul Fultz II committed
141
    rocm_add_test_executable(${NAME}
Umang Yadav's avatar
Umang Yadav committed
142
        ${CMAKE_CURRENT_BINARY_DIR}/header-main-include-${NAME}.cpp
Paul's avatar
Paul committed
143
144
145
146
        ${CMAKE_CURRENT_BINARY_DIR}/header-static-include-${NAME}.cpp
    )
endfunction()

147
function(test_headers PREFIX)
148
    file(GLOB HEADERS CONFIGURE_DEPENDS ${ARGN})
Artur Wojcik's avatar
Artur Wojcik committed
149
150
151
152
    if(NOT MIGRAPHX_USE_COMPOSABLEKERNEL)
        list(REMOVE_ITEM HEADERS
              ${CMAKE_SOURCE_DIR}/src/targets/gpu/include/migraphx/gpu/ck.hpp)
    endif()
153
154
155
156
157
    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)
158
        target_link_libraries(header_${TEST_NAME} migraphx migraphx_onnx migraphx_tf migraphx_all_targets)
159
160
    endforeach()
endfunction()
Paul's avatar
Paul committed
161

Paul's avatar
Paul committed
162
test_headers(migraphx ${CMAKE_SOURCE_DIR}/src/include/migraphx/*.hpp)
163
test_headers(migraphx/ref ${CMAKE_SOURCE_DIR}/src/targets/ref/include/migraphx/ref/*.hpp)
Umang Yadav's avatar
Umang Yadav committed
164

Paul's avatar
Paul committed
165
if(MIGRAPHX_ENABLE_GPU)
Paul Fultz II's avatar
Paul Fultz II committed
166
    test_headers(migraphx/gpu HEADERS ${CMAKE_SOURCE_DIR}/src/targets/gpu/include/migraphx/gpu/*.hpp DEPENDS migraphx_gpu)
167
endif()
168
if(MIGRAPHX_ENABLE_CPU)
Paul Fultz II's avatar
Paul Fultz II committed
169
    test_headers(migraphx/cpu HEADERS ${CMAKE_SOURCE_DIR}/src/targets/cpu/include/migraphx/cpu/*.hpp migraphx_cpu)
170
171
endif()
if(MIGRAPHX_ENABLE_FPGA)
Paul Fultz II's avatar
Paul Fultz II committed
172
    test_headers(migraphx/fpga HEADERS ${CMAKE_SOURCE_DIR}/src/targets/fpga/include/migraphx/fpga/*.hpp migraphx_fpga)
173
174
endif()

175