CMakeLists.txt 7.55 KB
Newer Older
1
# ******************************************************************************
2 3
# Copyright 2017-2018 Intel Corporation
#
Robert Kimball's avatar
Robert Kimball committed
4 5 6
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
7
#
Robert Kimball's avatar
Robert Kimball committed
8
#     http://www.apache.org/licenses/LICENSE-2.0
9
#
Robert Kimball's avatar
Robert Kimball committed
10 11 12 13 14
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
15
# ******************************************************************************
Robert Kimball's avatar
Robert Kimball committed
16

17 18 19 20 21 22 23 24
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
    if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.0.0")
        # gtest has issues with this with v1.8.x
        # gtest issue is supposed to be addressed after v1.8.x
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-zero-as-null-pointer-constant")
    endif()
endif()

25
set(SRC
26
    algebraic_simplification.cpp
27
    all_close_f.cpp
28 29
    any_all_insertion.cpp
    any_all_replacement.cpp
30
    assertion.cpp
31
    build_graph.cpp
32
    builder_autobroadcast.cpp
33
    constant_folding.cpp
34 35
    control_dependencies.cpp
    coordinate.cpp
36
    copy.cpp
37
    cpio.cpp
38
    cse.cpp
39
    element_type.cpp
40
    file_util.cpp
41
    graph_partition.cpp
42
    includes.cpp
43
    inliner.cpp
44
    input_output_assign.cpp
Bob Kimball's avatar
Bob Kimball committed
45
    main.cpp
46
    nop_elimination.cpp
47
    op.cpp
48
    partial_shape.cpp
49
    pass_liveness.cpp
Bob Kimball's avatar
Bob Kimball committed
50
    pass_manager.cpp
51
    pass_memory_layout.cpp
52
    pattern.cpp
53
    reshape_elimination.cpp
54
    reshape_sinking.cpp
55 56
    serialize.cpp
    shape.cpp
57
    tensor.cpp
58
    type_prop.cpp
59 60
    util.cpp
    uuid.cpp
61
    zero_dim_tensor_elimination.cpp
Robert Kimball's avatar
Robert Kimball committed
62 63
)

64 65 66
set_source_files_properties(includes.cpp PROPERTIES COMPILE_DEFINITIONS
    NGRAPH_INCLUDES="${PROJECT_SOURCE_DIR}/src/ngraph")

67
if (NGRAPH_ONNX_IMPORT_ENABLE)
68
    list(APPEND SRC onnx_import.cpp)
69
    if (NGRAPH_ONNXIFI_ENABLE)
70
        list(APPEND SRC onnxifi.cpp onnxifi_span.cpp)
71
    endif()
72 73
endif()

74
if (NGRAPH_INTERPRETER_ENABLE)
75 76 77
    list(APPEND SRC
        backend_debug_api.cpp
        builder.cpp
78
        backend_api.cpp)
79
    set(ACTIVE_BACKEND_LIST ${ACTIVE_BACKEND_LIST} INTERPRETER)
80 81
endif()

82
if (NGRAPH_CPU_ENABLE)
83
    list(APPEND SRC core_fusion.cpp builder_quantization.cpp)
84
    list(APPEND SRC backend_performance.cpp cpu_fusion.cpp cpu_test.cpp cpu_debugger.cpp)
85 86 87
    if (NGRAPH_HALIDE)
        list(APPEND SRC halide.cpp)
    endif()
88
    set(ACTIVE_BACKEND_LIST ${ACTIVE_BACKEND_LIST} CPU)
89 90
endif()

91
if(NGRAPH_GPU_ENABLE)
Robert Kimball's avatar
Robert Kimball committed
92
    list(APPEND SRC cudnn.cpp gpu_test.cpp gpu_fusion.cpp)
93
    set(ACTIVE_BACKEND_LIST ${ACTIVE_BACKEND_LIST} GPU)
94 95
endif()

96 97 98
if (NGRAPH_INTELGPU_ENABLE)
    set(ACTIVE_BACKEND_LIST ${ACTIVE_BACKEND_LIST} INTELGPU)
endif()
99

100 101
if (NGRAPH_GPUH_ENABLE)
    set(ACTIVE_BACKEND_LIST ${ACTIVE_BACKEND_LIST} GPUH)
Sandeep's avatar
Sandeep committed
102 103
endif()

104 105 106 107
if (NGRAPH_PLAIDML_ENABLE)
    set(ACTIVE_BACKEND_LIST ${ACTIVE_BACKEND_LIST} PlaidML)
endif()

108 109 110 111 112 113 114 115 116 117 118 119
add_subdirectory(models)
add_subdirectory(files)
add_subdirectory(util)

# backend specific test files must meet the following requirements:
# 1) The must be named <name>.in.cpp
# 2) They must be in the test directory
# 3) add the line `static string s_manifest = "${MANIFEST}";` to your cpp file
# All such files are configured via cmake which replaces all instances of cmake variables
# such as ${BACKEND_NAME} with their values, such as CPU, GPU, or INTERPRETER.
set(MULTI_TEST_SRC
    autodiff.in.cpp
120 121
    backend_all.in.cpp
    backend_any.in.cpp
122 123 124 125
    backend_binary_elementwise.in.cpp
    backend_broadcast.in.cpp
    backend_comparison.in.cpp
    backend_dot.in.cpp
126
    backend_embedding_lookup.in.cpp
127
    backend_one_hot.in.cpp
128
    backend_pool.in.cpp
129 130 131
    backend_reduce.in.cpp
    backend_reshape.in.cpp
    backend_sum.in.cpp
132 133
    backend_topk.in.cpp
    backend_arg_reduce.in.cpp
134
    backend_test.in.cpp
135
    backend_unary_elementwise.in.cpp
136 137 138
    convolution_test.in.cpp
)
if(NGRAPH_DISTRIBUTED_ENABLE)
Robert Kimball's avatar
Robert Kimball committed
139
    list(APPEND MULTI_TEST_SRC distributed.in.cpp)
140
endif()
141 142 143
if (NGRAPH_CPU_ENABLE)
    list(APPEND MULTI_TEST_SRC backend_graph_comparison.in.cpp)
endif()
144

145
foreach(BACKEND_NAME ${ACTIVE_BACKEND_LIST})
146 147 148 149 150 151 152 153 154 155 156
    # Some---but not all---autodiff tests go through multiple iterations with
    # different random seeds. On the CPU backend this is currently very slow
    # because the autodiff tests recompile with each iteration. That behavior
    # can be changed, but it's a bit involved, so for the time being we just
    # reduce the number of test iterations on non-INTERPRETER backends.
    if(${BACKEND_NAME} MATCHES ^INTERPRETER$)
        set(TEST_LOOPS 100)
    else()
        set(TEST_LOOPS 2)
    endif()

157 158 159 160 161 162 163 164
    string(TOLOWER ${BACKEND_NAME} BACKEND_DIR)
    set(MANIFEST ${PROJECT_SOURCE_DIR}/src/ngraph/runtime/${BACKEND_DIR}/unit_test.manifest)

    foreach(TEST_SRC ${MULTI_TEST_SRC})
        string(REPLACE ".in." "_${BACKEND_NAME}." TARGET_NAME ${TEST_SRC})
        configure_file(${TEST_SRC} ${TARGET_NAME})
        set(SRC ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME} ${SRC})
    endforeach()
165

166 167
    message(STATUS "Adding unit test for backend ${BACKEND_NAME}")
endforeach()
168

Robert Kimball's avatar
Robert Kimball committed
169 170 171
add_executable(unit-test ${SRC})

target_include_directories(unit-test PRIVATE ".")
172

173
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Robert Kimball's avatar
Robert Kimball committed
174
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCURDIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\"")
175 176
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJSON_INCLUDES=\\\"${JSON_INCLUDE_DIR}\\\"")

177 178 179
if(NGRAPH_ADDRESS_SANITIZER)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fsanitize=address -fno-omit-frame-pointer")
endif()
Robert Kimball's avatar
Robert Kimball committed
180

181
if(NGRAPH_DISTRIBUTED_ENABLE)
Robert Kimball's avatar
Robert Kimball committed
182
    target_compile_definitions(unit-test PRIVATE NGRAPH_DISTRIBUTED)
183
    target_link_libraries(unit-test PRIVATE libmlsl)
184 185
endif()

Robert Kimball's avatar
Robert Kimball committed
186
target_link_libraries(unit-test PRIVATE ngraph_test_util)
187 188 189 190
target_link_libraries(unit-test PRIVATE ngraph libgtest libjson)
if(NOT WIN32)
    target_link_libraries(unit-test PRIVATE pthread)
endif()
Robert Kimball's avatar
Robert Kimball committed
191
target_link_libraries(unit-test PRIVATE ${CMAKE_DL_LIBS})
192

193 194 195 196
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "^(Apple)?Clang$")
    target_compile_options(unit-test PRIVATE -Wno-undef -Wno-reserved-id-macro)
endif()

197 198
if (NGRAPH_CPU_ENABLE)
    # The INTERPRETER backend is required for graph_partition, convolution, and backwards unit tests
Robert Kimball's avatar
Robert Kimball committed
199 200
    target_link_libraries(unit-test PRIVATE cpu_backend interpreter_backend)
    target_link_libraries(unit-test PRIVATE libmkldnn)
201 202
endif()

203 204 205 206
if (NGRAPH_PLAIDML_ENABLE)
    target_link_libraries(unit-test PRIVATE plaidml_backend)
endif()

207
if (NGRAPH_TBB_ENABLE)
Robert Kimball's avatar
Robert Kimball committed
208
    target_compile_definitions(unit-test PRIVATE NGRAPH_TBB_ENABLE)
209 210
endif()

Jayaram Bobba's avatar
Jayaram Bobba committed
211 212 213 214
if (NGRAPH_HALIDE)
    target_compile_definitions(unit-test PRIVATE "NGRAPH_HALIDE")
endif()

215
if (NGRAPH_INTERPRETER_ENABLE)
Robert Kimball's avatar
Robert Kimball committed
216 217
    target_compile_definitions(unit-test PRIVATE NGRAPH_INTERPRETER_ENABLE)
    target_link_libraries(unit-test PRIVATE interpreter_backend)
218 219
endif()

Sandeep's avatar
Sandeep committed
220 221 222 223
if (NGRAPH_HYBRID_ENABLE)
    target_link_libraries(unit-test PRIVATE hybrid_backend)
endif()

224
if (NGRAPH_GPU_ENABLE)
Robert Kimball's avatar
Robert Kimball committed
225
    target_link_libraries(unit-test PRIVATE gpu_backend)
226 227
endif()

Robert Kimball's avatar
Robert Kimball committed
228 229 230 231
if (NGRAPH_NOP_ENABLE)
    target_link_libraries(unit-test PRIVATE nop_backend)
endif()

232 233 234 235
if (NGRAPH_GPUH_ENABLE)
    target_link_libraries(unit-test PRIVATE gpuh_backend)
endif()

236 237
if (NGRAPH_ONNXIFI_ENABLE)
    target_include_directories(unit-test SYSTEM PUBLIC ${ONNX_INCLUDE_DIR})
Robert Kimball's avatar
Robert Kimball committed
238
    target_link_libraries(unit-test PRIVATE onnxifi-ngraph)
239 240
endif()

241
add_custom_target(unit-test-check
242
    COMMAND ${PROJECT_BINARY_DIR}/test/unit-test \${ARGS}
243
    DEPENDS unit-test
244
)
245 246

add_custom_target(check
247 248 249 250
    DEPENDS
    style-check
    unit-test-check
)