CMakeLists.txt 5.96 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
include_directories(
    SYSTEM
19 20 21
    ${GTEST_INCLUDE_DIR}
    ${EIGEN_INCLUDE_DIR}
    )
Robert Kimball's avatar
Robert Kimball committed
22

23 24
include_directories(
    ${NGRAPH_INCLUDE_DIR}
25
    )
Robert Kimball's avatar
Robert Kimball committed
26 27

set (SRC
28
    backend_debug_api.cpp
29
    builder.cpp
30
    builder_autobroadcast.cpp
31
    builder_xla.cpp
32
    build_graph.cpp
33
    copy.cpp
34
    eigen.cpp
35
    element_type.cpp
36
    file_util.cpp
37
    inliner.cpp
38
    input_output_assign.cpp
Bob Kimball's avatar
Bob Kimball committed
39 40
    main.cpp
    op.cpp
41
    pass_liveness.cpp
Bob Kimball's avatar
Bob Kimball committed
42
    pass_manager.cpp
43
    pass_memory_layout.cpp
44
    runtime_manager.cpp
Robert Kimball's avatar
Robert Kimball committed
45
    serialize.cpp
46
    pattern.cpp
47
    shape.cpp
48
    reshape_elimination.cpp
49
    tensor.cpp
50
    type_prop.cpp
51
    util/autodiff/backprop_function.cpp
52
    util/test_tools.cpp
53 54
    util.cpp
    uuid.cpp
Robert Kimball's avatar
Robert Kimball committed
55 56
)

57 58
add_subdirectory(models)

59 60 61 62 63 64
#================================================================================================
# To auto generate a suite of unit tests for a backend add a line like this
# set(BACKEND_NAMES ${BACKEND_NAMES} "BACKEND_NAME_GOES_HERE")
# and replace BACKEND_NAME_GOES_HERE with your backend name.
# The code for the unit test suite is in test/backend_test.in.cpp
#================================================================================================
65 66
# TODO add interpreter back to unit tests when it works
set(BACKEND_NAMES ${BACKEND_NAMES} "INTERPRETER")
67

68
if(MKLDNN_INCLUDE_DIR)
69
    include_directories(SYSTEM ${MKLDNN_INCLUDE_DIR})
70 71 72 73
    link_directories(${MKLDNN_LIB_DIR})
    set(SRC ${SRC} mkldnn.cpp)
endif()

74
if(NGRAPH_CPU_ENABLE AND LLVM_INCLUDE_DIR)
75
    include_directories(SYSTEM ${LLVM_INCLUDE_DIR})
76
    link_directories(${LLVM_LIB_DIR})
77
    set(SRC ${SRC} backend_performance.cpp codegen.cpp cpu_fusion.cpp)
78
    set(BACKEND_NAMES ${BACKEND_NAMES} "CPU")
79 80
endif()

81 82 83
if(NGRAPH_GPU_ENABLE AND LLVM_INCLUDE_DIR)
    include_directories(SYSTEM ${LLVM_INCLUDE_DIR})
    link_directories(${LLVM_LIB_DIR})
84 85
    link_directories(${CUDA_LIBRARIES})
    link_directories(${CUDA_CUBLAS_LIBRARIES})
86
    link_directories(${CUDNN_LIBRARIES})
Tristan Webb's avatar
Tristan Webb committed
87
    set(SRC
88
        ${SRC}
Tristan Webb's avatar
Tristan Webb committed
89 90
        cudnn.cpp)
    # Disabled for testing
91
    set(BACKEND_NAMES ${BACKEND_NAMES} "GPU")
92 93
endif()

94
if(NGRAPH_ARGON_ENABLE)
95
    include_directories(SYSTEM ${ARGON_TRANSFORMER_INCLUDE_DIR})
96
    set(BACKEND_NAMES ${BACKEND_NAMES} "ARGON")
97
    set(SRC ${SRC} argon_fusion.cpp)
98 99 100 101

    # enable additional Argon backend test 
    set(ARGON_ADDITIONAL_BACKEND_TESTS ${ARGON_TRANSFORMER_SOURCE_DIR}/test/test_argon_backend)
    message(STATUS "ARGON_ADDITIONAL_BACKEND_TESTS path: ${ARGON_ADDITIONAL_BACKEND_TESTS}")
102
    set(ADDITIONAL_ARGON_TEST
103 104 105 106 107
            ${ARGON_ADDITIONAL_BACKEND_TESTS}/test_reduce_sum.cpp
            ${ARGON_ADDITIONAL_BACKEND_TESTS}/test_dot.cpp
            ${ARGON_ADDITIONAL_BACKEND_TESTS}/test_broadcast.cpp
            ${ARGON_ADDITIONAL_BACKEND_TESTS}/test_conv.cpp
            ${ARGON_ADDITIONAL_BACKEND_TESTS}/test_binary_ew.cpp)
108 109 110 111
    
    # ensures ADDITIONAL_ARGON_TEST are a dependency on argon transformer
    add_custom_command(OUTPUT ${ADDITIONAL_ARGON_TEST} DEPENDS ext_argon_transformer COMMAND "")
    set(SRC ${SRC} ${ADDITIONAL_ARGON_TEST})
112 113
endif()

114 115
foreach(BACKEND_NAME ${BACKEND_NAMES})
    configure_file(backend_test.in.cpp backend_test_${BACKEND_NAME}.cpp)
116
    configure_file(convolution_test.in.cpp convolution_test_${BACKEND_NAME}.cpp)
117
    set(SRC ${SRC} ${CMAKE_CURRENT_BINARY_DIR}/backend_test_${BACKEND_NAME}.cpp)
118
    set(SRC ${SRC} ${CMAKE_CURRENT_BINARY_DIR}/convolution_test_${BACKEND_NAME}.cpp)
119

120 121 122 123 124 125 126 127 128 129 130 131 132 133
    # 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()

    configure_file(autodiff.in.cpp autodiff_${BACKEND_NAME}.cpp)
    set(SRC ${SRC} ${CMAKE_CURRENT_BINARY_DIR}/autodiff_${BACKEND_NAME}.cpp)

134 135
    message(STATUS "Adding unit test for backend ${BACKEND_NAME}")
endforeach()
136

137
include_directories(".")
138

139
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Robert Kimball's avatar
Robert Kimball committed
140
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCURDIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\"")
141 142 143
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
144

145
add_executable(unit-test ${SRC})
146

147 148 149 150 151
if(MKLDNN_INCLUDE_DIR)
    target_link_libraries(unit-test mkldnn)
    add_dependencies(unit-test ext_mkldnn)
endif()

152 153 154 155 156
if(LLVM_INCLUDE_DIR)
    target_link_libraries(unit-test ${LLVM_LINK_LIBS})
    add_dependencies(unit-test ext_llvm)
endif()

Tristan Webb's avatar
Tristan Webb committed
157
if(CUDA_INCLUDE_DIRS)
158
  target_link_libraries(unit-test ${CUDA_LIBRARIES} ${CUDNN_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES})
159 160
endif()

161
target_link_libraries(unit-test ngraph libgtest pthread)
162 163
target_link_libraries(unit-test ${CMAKE_DL_LIBS})

164
add_dependencies(unit-test ngraph libgtest eigen)
165

166 167 168 169 170
add_custom_target(style-check
        COMMAND ${PROJECT_SOURCE_DIR}/maint/check-code-format.sh
        )

add_custom_target(unit-test-check
Bob Kimball's avatar
Bob Kimball committed
171
	COMMAND ${PROJECT_BINARY_DIR}/test/unit-test \${ARGS}
172 173 174 175 176 177 178 179 180
	DEPENDS unit-test
        )

add_custom_target(check
        DEPENDS
        style-check
        unit-test-check
        )