• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# find python library
2if(MODE_ASCEND_ACL)
3    get_filename_component(PYTHON_LIB_REALPATH ${PYTHON_LIBRARIES} ABSOLUTE)
4    get_filename_component(PYTHON_LIB_DIR ${PYTHON_LIB_REALPATH} PATH)
5
6    execute_process(
7            COMMAND "${Python3_EXECUTABLE}" -c "import distutils.sysconfig as sysconfig; \
8                  print(sysconfig.get_config_var('PY3LIBRARY'))"
9            RESULT_VARIABLE result
10            OUTPUT_VARIABLE PY3LIBRARY)
11    set(PY3_LIBG ${PYTHON_LIB_DIR}/${PY3LIBRARY})
12    string(STRIP "${PY3_LIBG}" PY3_LIBG)
13    message("Python3 general library = " ${PY3_LIBG})
14endif()
15# build mindspore_shared_lib
16include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc)
17include_directories(${CMAKE_SOURCE_DIR}/mindspore/ccsrc/minddata/dataset)
18if(NOT BUILD_LITE)
19    set(LOAD_MINDIR_SRC
20            ${CMAKE_SOURCE_DIR}/mindspore/core/load_mindir/load_model.cc
21            ${CMAKE_SOURCE_DIR}/mindspore/core/load_mindir/anf_model_parser.cc
22            )
23endif()
24
25file(GLOB_RECURSE API_OPS_SRC ${CMAKE_CURRENT_SOURCE_DIR} "ops/*.cc")
26
27if(ENABLE_D OR ENABLE_ACL)
28    # build 910 and 310 code into one distro, files needed for 310 mode
29    add_compile_definitions(ENABLE_ACL)
30    include_directories(${CMAKE_SOURCE_DIR}/graphengine/ge)
31    include_directories(${CMAKE_BINARY_DIR}/proto/ge)
32
33    file(GLOB_RECURSE API_ACL_SRC ${CMAKE_CURRENT_SOURCE_DIR}
34            "akg_kernel_register.cc"
35            "model/acl/*.cc"
36            "model/model_converter_utils/*.cc"
37            "graph/acl/*.cc"
38            )
39
40    if(NOT ENABLE_D)
41        list(APPEND API_ACL_SRC $<TARGET_OBJECTS:_mindspore_transform_graph_ir_obj>)
42        list(APPEND API_ACL_SRC $<TARGET_OBJECTS:_mindspore_vm_obj>)
43    endif()
44endif()
45
46if(ENABLE_D)
47    # for 910 mode
48    file(GLOB_RECURSE API_MS_INFER_SRC ${CMAKE_CURRENT_SOURCE_DIR}
49        "model/ms/*.cc" "graph/ascend/*.cc")
50endif()
51
52if(ENABLE_GPU)
53    file(GLOB_RECURSE API_MS_INFER_SRC ${CMAKE_CURRENT_SOURCE_DIR}
54        "akg_kernel_register.cc" "model/ms/*.cc" "graph/gpu/*.cc")
55endif()
56
57set(MSLIB_SRC ${CMAKE_CURRENT_SOURCE_DIR}/types.cc
58              ${CMAKE_CURRENT_SOURCE_DIR}/context.cc
59              ${CMAKE_CURRENT_SOURCE_DIR}/cell.cc
60              ${CMAKE_CURRENT_SOURCE_DIR}/serialization.cc
61              ${CMAKE_CURRENT_SOURCE_DIR}/graph/graph.cc
62              ${CMAKE_CURRENT_SOURCE_DIR}/graph/graph_data.cc
63              ${CMAKE_CURRENT_SOURCE_DIR}/model/model.cc
64              ${CMAKE_CURRENT_SOURCE_DIR}/model/model_impl.cc
65              ${API_MS_INFER_SRC}
66              ${API_ACL_SRC}
67              ${API_OPS_SRC}
68              ${LOAD_MINDIR_SRC})
69
70if(BUILD_LITE)
71    list(APPEND MSLIB_SRC "${CMAKE_CURRENT_SOURCE_DIR}/../../../mindspore/ccsrc/utils/config_manager.cc")
72    list(REMOVE_ITEM MSLIB_SRC "${CMAKE_CURRENT_SOURCE_DIR}/akg_kernel_register.cc"
73            "${CMAKE_CURRENT_SOURCE_DIR}/model/acl/acl_model_multi.cc"
74            "${CMAKE_CURRENT_SOURCE_DIR}/model/acl/acl_model.cc"
75            "${CMAKE_CURRENT_SOURCE_DIR}/serialization.cc"
76            "${CMAKE_CURRENT_SOURCE_DIR}/model/model.cc"
77            "${CMAKE_CURRENT_SOURCE_DIR}/model/model_impl.cc"
78            $<TARGET_OBJECTS:_mindspore_vm_obj>)
79endif()
80
81add_library(mindspore_shared_lib SHARED ${MSLIB_SRC})
82if(NOT BUILD_LITE)
83    set_target_properties(mindspore_shared_lib PROPERTIES OUTPUT_NAME mindspore)
84endif()
85
86if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
87    target_link_libraries(mindspore_shared_lib PRIVATE ${PYTHON_LIBRARIES} ${SECUREC_LIBRARY}
88            -Wl,-force_load mindspore -Wl,-noall_load mindspore_core proto_input mindspore_gvar mindspore::protobuf)
89else()
90    if(ENABLE_D OR ENABLE_GPU)
91        target_link_libraries(mindspore_shared_lib PRIVATE -Wl,--as-needed ${PYTHON_LIBRARIES} ${SECUREC_LIBRARY}
92            -Wl,--whole-archive mindspore -Wl,--no-whole-archive mindspore_core proto_input mindspore_gvar
93            mindspore::protobuf)
94    else()
95        if(BUILD_LITE)
96            target_link_libraries(mindspore_shared_lib PRIVATE ${SECUREC_LIBRARY})
97        else()
98            target_link_libraries(mindspore_shared_lib PRIVATE ${PY3_LIBG} ${SECUREC_LIBRARY}
99                    mindspore mindspore_core proto_input mindspore_gvar mindspore::protobuf)
100        endif()
101    endif()
102endif()
103
104if(ENABLE_CPU)
105    target_link_libraries(mindspore_shared_lib PRIVATE mindspore::dnnl mindspore::mkldnn nnacl)
106endif()
107
108if(USE_GLOG)
109    target_link_libraries(mindspore_shared_lib PRIVATE mindspore::glog)
110endif()
111
112if(CMAKE_SYSTEM_NAME MATCHES "Linux")
113    target_link_options(mindspore_shared_lib PRIVATE -Wl,-init,common_log_init)
114endif()
115
116if(ENABLE_D OR ENABLE_ACL)
117    # 310 mode
118    add_compile_definitions(ENABLE_DVPP_INTERFACE)
119    find_library(acl libascendcl.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
120    find_library(acl_cblas libacl_cblas.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
121    find_library(acl_dvpp libacl_dvpp.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
122    find_library(acl_runtime libruntime.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
123    find_library(ge_compiler libge_compiler.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
124    find_library(libplatform libplatform.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
125    find_library(libcompress libcompress.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
126    find_library(libopskernel libopskernel.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
127    find_library(libaicore_utils libaicore_utils.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
128    find_library(libaicpu_engine_common libaicpu_engine_common.so ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
129
130    target_link_libraries(mindspore_shared_lib PRIVATE -Wl,--no-as-needed graph ${ge_compiler}
131            ${acl_retr} ${acl_cblas} ${acl_dvpp} ${acl_runtime} ${libplatform} ${libcompress} ${libopskernel}
132            ${libaicore_utils} ${libaicpu_engine_common} ${acl})
133    add_dependencies(mindspore_shared_lib graph)
134endif()
135
136
137# Before build inference
138if(ENABLE_D)
139    find_library(adump_server libadump_server.a ${ASCEND_RUNTIME_PATH} ${ASCEND_TOOLKIT_RUNTIME_PATH})
140    target_link_libraries(mindspore_shared_lib PRIVATE ${adump_server})
141endif()
142
143if(ENABLE_GPU)
144    target_link_libraries(mindspore_shared_lib PRIVATE  gpu_cuda_lib gpu_queue cublas
145                          ${CUDA_PATH}/lib64/libcurand.so
146                          ${CUDNN_LIBRARY_PATH}
147                          ${CUDA_PATH}/lib64/libcudart.so
148                          ${CUDA_PATH}/lib64/stubs/libcuda.so
149                          ${CUDA_PATH}/lib64/libcusolver.so
150                          ${CUDA_PATH}/lib64/libcufft.so)
151endif()
152
153if(CMAKE_SYSTEM_NAME MATCHES "Linux")
154    set(MINDSPORE_RPATH $ORIGIN)
155    if(ENABLE_D OR ENABLE_ACL)
156        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/nnae/latest/fwkacllib/lib64)
157        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64)
158        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/fwkacllib/lib64)
159        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/opp/op_impl/built-in/ai_core/tbe/op_tiling)
160        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/nnae/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling)
161        set(MINDSPORE_RPATH
162            ${MINDSPORE_RPATH}:/usr/local/Ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling)
163
164        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/nnae/latest/atc/lib64)
165        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/ascend-toolkit/latest/atc/lib64)
166        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/atc/lib64)
167        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/nnae/latest/acllib/lib64)
168        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64)
169        set(MINDSPORE_RPATH ${MINDSPORE_RPATH}:/usr/local/Ascend/acllib/lib64)
170    endif()
171
172    set_target_properties(mindspore_shared_lib PROPERTIES INSTALL_RPATH ${MINDSPORE_RPATH})
173endif()
174