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