diff --git a/build.sh b/build.sh index 034999172d4..0fc92bfeadd 100755 --- a/build.sh +++ b/build.sh @@ -467,7 +467,7 @@ build_mindspore() CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_GPU=ON -DUSE_CUDA=ON -DCUDA_PATH=$CUDA_PATH -DMS_REQUIRE_CUDA_VERSION=${CUDA_VERSION}" fi if [[ "X$ENABLE_CPU" = "Xon" ]]; then - CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_CPU=ON" + CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_CPU=ON -DX86_64_SIMD=${X86_64_SIMD}" fi if [[ "X$COMPILE_MINDDATA" = "Xon" ]]; then CMAKE_ARGS="${CMAKE_ARGS} -DENABLE_MINDDATA=ON" diff --git a/cmake/package.cmake b/cmake/package.cmake index 89329655f0b..cf10d2e161c 100644 --- a/cmake/package.cmake +++ b/cmake/package.cmake @@ -173,6 +173,11 @@ if(ENABLE_CPU) DESTINATION ${INSTALL_LIB_DIR} COMPONENT mindspore ) + install( + TARGETS nnacl + DESTINATION ${INSTALL_LIB_DIR} + COMPONENT mindspore + ) endif() if(ENABLE_MPI) diff --git a/mindspore/ccsrc/CMakeLists.txt b/mindspore/ccsrc/CMakeLists.txt index 6b6167b6feb..93583b4578a 100644 --- a/mindspore/ccsrc/CMakeLists.txt +++ b/mindspore/ccsrc/CMakeLists.txt @@ -7,15 +7,13 @@ if(ENABLE_CPU) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/backend/kernel_compiler/cpu) if("${X86_64_SIMD}" STREQUAL "sse") add_compile_definitions(ENABLE_SSE) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2") endif() if("${X86_64_SIMD}" STREQUAL "avx") add_compile_definitions(ENABLE_SSE) add_compile_definitions(ENABLE_AVX) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1 -mavx -mavx2") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1 -mavx -mavx2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2") endif() + add_subdirectory(backend/kernel_compiler/cpu/nnacl) endif() if(ENABLE_ACL) @@ -415,7 +413,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin") endif() if(ENABLE_CPU) - target_link_libraries(_c_expression PRIVATE mindspore::dnnl mindspore::mkldnn) + target_link_libraries(_c_expression PRIVATE mindspore::dnnl mindspore::mkldnn nnacl) endif() if(ENABLE_MINDDATA) diff --git a/mindspore/ccsrc/backend/kernel_compiler/CMakeLists.txt b/mindspore/ccsrc/backend/kernel_compiler/CMakeLists.txt index f0e7c3f8ef9..704489e53a9 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/CMakeLists.txt +++ b/mindspore/ccsrc/backend/kernel_compiler/CMakeLists.txt @@ -29,30 +29,6 @@ if(ENABLE_D) endif() if(ENABLE_CPU) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") - file(GLOB NNACL_C_SRC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} - "cpu/nnacl/*.c" - "cpu/nnacl/fp32/*.c" - "cpu/nnacl/int8/*.c" - "cpu/nnacl/infer/*.c" - "cpu/nnacl/base/*.c" - ) - if("${X86_64_SIMD}" STREQUAL "sse") - file(GLOB NNACL_ASM_SRC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} - "cpu/nnacl/intrinsics/sse/*.c" - ) - set_property(SOURCE ${NNACL_ASM_SRC} PROPERTY LANGUAGE C) - endif() - if("${X86_64_SIMD}" STREQUAL "avx") - file(GLOB NNACL_ASM_SRC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} - "cpu/nnacl/intrinsics/sse/*.c" - "cpu/nnacl/intrinsics/avx/*.c" - "cpu/nnacl/assembly/avx/*.S" - ) - set_property(SOURCE ${NNACL_ASM_SRC} PROPERTY LANGUAGE C) - endif() - set(NNACL_SRC ${NNACL_C_SRC} ${NNACL_ASM_SRC}) - file(GLOB CPU_SRC_LIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "cpu/*.cc" "cpu/mkldnn/*.cc" @@ -129,7 +105,7 @@ if(ENABLE_GPU) # add_library(_mindspore_kernel_cuda_obj OBJECT ${CUDA_SRC_LIST}) endif() -set_property(SOURCE ${KERNEL_SRC_LIST} ${NNACL_SRC} ${CPU_SRC_LIST} ${GPU_SRC_LIST} ${D_SRC_LIST} +set_property(SOURCE ${KERNEL_SRC_LIST} ${CPU_SRC_LIST} ${GPU_SRC_LIST} ${D_SRC_LIST} PROPERTY COMPILE_DEFINITIONS SUBMODULE_ID=mindspore::SubModuleId::SM_KERNEL) -add_library(_mindspore_backend_kernel_compiler_obj OBJECT ${KERNEL_SRC_LIST} ${NNACL_SRC} ${CPU_SRC_LIST} +add_library(_mindspore_backend_kernel_compiler_obj OBJECT ${KERNEL_SRC_LIST} ${CPU_SRC_LIST} ${GPU_SRC_LIST} ${D_SRC_LIST} ${QUANTUM_SRC_LIST}) diff --git a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/CMakeLists.txt b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/CMakeLists.txt index 94a001d3922..7263e16d793 100644 --- a/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/CMakeLists.txt +++ b/mindspore/ccsrc/backend/kernel_compiler/cpu/nnacl/CMakeLists.txt @@ -7,19 +7,20 @@ if(PLATFORM_ARM32 OR PLATFORM_ARM64) if("${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND DEFINED ARCHS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstrict-aliasing \ -ffunction-sections -fdata-sections -ffast-math -Wno-shorten-64-to-32") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrict-aliasing \ - -ffunction-sections -fdata-sections -ffast-math -Wno-shorten-64-to-32") endif() if("${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND NOT DEFINED ARCHS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fomit-frame-pointer -fstrict-aliasing \ -ffunction-sections -fdata-sections -ffast-math") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fomit-frame-pointer -fstrict-aliasing \ - -ffunction-sections -fdata-sections -ffast-math") endif() endif() +if(ENABLE_CPU) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") +endif() if("${X86_64_SIMD}" STREQUAL "avx") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.1 -mavx -mavx2") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1 -mavx -mavx2") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1 -mavx -mavx2 -mfma") +endif() +if("${X86_64_SIMD}" STREQUAL "sse") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.1") endif() ########################### files ########################### @@ -63,10 +64,16 @@ endif() ########################### build nnacl static library ######################## string(REPLACE "-fvisibility=hidden" "-fvisibility=default" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") -add_library(nnacl STATIC ${KERNEL_SRC} ${TRAIN_SRC} ${ASSEMBLY_SRC}) +if(ENABLE_CPU) + add_library(nnacl SHARED ${KERNEL_SRC} ${TRAIN_SRC} ${ASSEMBLY_SRC}) +else() + add_library(nnacl STATIC ${KERNEL_SRC} ${TRAIN_SRC} ${ASSEMBLY_SRC}) +endif() add_library(nnacl_mid OBJECT ${KERNEL_SRC} ${TRAIN_SRC} ${ASSEMBLY_SRC}) -add_dependencies(nnacl fbs_src) -add_dependencies(nnacl_mid fbs_src) +if(NOT ENABLE_CPU) + add_dependencies(nnacl fbs_src) + add_dependencies(nnacl_mid fbs_src) +endif() ########################### arm fp16 build optimize library ######################## if(ENABLE_FP16)