ascend.cmake 5.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
#
# 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
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# 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 16 17
#NOTE: Logic is from
# https://github.com/mindspore-ai/graphengine/blob/master/CMakeLists.txt
if(DEFINED ENV{ASCEND_CUSTOM_PATH})
18
  set(ASCEND_DIR $ENV{ASCEND_CUSTOM_PATH})
19
else()
20
  set(ASCEND_DIR /usr/local/Ascend)
21 22
endif()

23 24
if(EXISTS
   ${ASCEND_DIR}/ascend-toolkit/latest/fwkacllib/include/graph/ascend_string.h)
25 26 27 28
  # It means CANN 20.2 +
  add_definitions(-DPADDLE_WITH_ASCEND_STRING)
endif()

29
if(WITH_ASCEND OR WITH_ASCEND_CL)
30 31 32 33 34 35 36 37
  set(ASCEND_DRIVER_DIR ${ASCEND_DIR}/driver/lib64)
  set(ASCEND_DRIVER_COMMON_DIR ${ASCEND_DIR}/driver/lib64/common)
  set(ASCEND_DRIVER_SHARE_DIR ${ASCEND_DIR}/driver/lib64/share)
  set(ASCEND_RUNTIME_DIR ${ASCEND_DIR}/fwkacllib/lib64)
  set(ASCEND_ATC_DIR ${ASCEND_DIR}/atc/lib64)
  set(ASCEND_ACL_DIR ${ASCEND_DIR}/acllib/lib64)
  set(STATIC_ACL_LIB ${ASCEND_ACL_DIR})

38 39
  set(ASCEND_MS_RUNTIME_PATH ${ASCEND_RUNTIME_DIR} ${ASCEND_ACL_DIR}
                             ${ASCEND_ATC_DIR})
40 41
  set(ASCEND_MS_DRIVER_PATH ${ASCEND_DRIVER_DIR} ${ASCEND_DRIVER_COMMON_DIR})
  set(ATLAS_RUNTIME_DIR ${ASCEND_DIR}/ascend-toolkit/latest/fwkacllib/lib64)
42 43
  set(ATLAS_RUNTIME_INC_DIR
      ${ASCEND_DIR}/ascend-toolkit/latest/fwkacllib/include)
44 45
  set(ATLAS_ACL_DIR ${ASCEND_DIR}/ascend-toolkit/latest/acllib/lib64)
  set(ATLAS_ATC_DIR ${ASCEND_DIR}/ascend-toolkit/latest/atc/lib64)
46 47
  set(ATLAS_MS_RUNTIME_PATH ${ATLAS_RUNTIME_DIR} ${ATLAS_ACL_DIR}
                            ${ATLAS_ATC_DIR})
48 49 50 51

  set(atlas_graph_lib ${ATLAS_RUNTIME_DIR}/libgraph.so)
  set(atlas_ge_runner_lib ${ATLAS_RUNTIME_DIR}/libge_runner.so)
  set(atlas_acl_lib ${ATLAS_RUNTIME_DIR}/libascendcl.so)
52
  include_directories(${ATLAS_RUNTIME_INC_DIR})
53

54 55 56
  add_library(ascend_ge SHARED IMPORTED GLOBAL)
  set_property(TARGET ascend_ge PROPERTY IMPORTED_LOCATION
                                         ${atlas_ge_runner_lib})
57

58 59 60
  add_library(ascend_graph SHARED IMPORTED GLOBAL)
  set_property(TARGET ascend_graph PROPERTY IMPORTED_LOCATION
                                            ${atlas_graph_lib})
61

62 63
  add_library(atlas_acl SHARED IMPORTED GLOBAL)
  set_property(TARGET atlas_acl PROPERTY IMPORTED_LOCATION ${atlas_acl_lib})
64 65

  add_custom_target(extern_ascend DEPENDS ascend_ge ascend_graph atlas_acl)
66 67
endif()

68 69 70
if(WITH_ASCEND_CL)
  set(ASCEND_CL_DIR ${ASCEND_DIR}/ascend-toolkit/latest/fwkacllib/lib64)

71
  set(ascend_hccl_lib ${ASCEND_CL_DIR}/libhccl.so)
72 73
  set(ascendcl_lib ${ASCEND_CL_DIR}/libascendcl.so)
  set(acl_op_compiler_lib ${ASCEND_CL_DIR}/libacl_op_compiler.so)
74 75
  set(FWKACLLIB_INC_DIR ${ASCEND_DIR}/ascend-toolkit/latest/fwkacllib/include)
  set(ACLLIB_INC_DIR ${ASCEND_DIR}/ascend-toolkit/latest/acllib/include)
76

77
  message(STATUS "FWKACLLIB_INC_DIR ${FWKACLLIB_INC_DIR}")
78
  message(STATUS "ASCEND_CL_DIR ${ASCEND_CL_DIR}")
79 80
  include_directories(${FWKACLLIB_INC_DIR})
  include_directories(${ACLLIB_INC_DIR})
81

82 83
  add_library(ascendcl SHARED IMPORTED GLOBAL)
  set_property(TARGET ascendcl PROPERTY IMPORTED_LOCATION ${ascendcl_lib})
84

85 86
  add_library(ascend_hccl SHARED IMPORTED GLOBAL)
  set_property(TARGET ascend_hccl PROPERTY IMPORTED_LOCATION ${ascend_hccl_lib})
87

88 89 90
  add_library(acl_op_compiler SHARED IMPORTED GLOBAL)
  set_property(TARGET acl_op_compiler PROPERTY IMPORTED_LOCATION
                                               ${acl_op_compiler_lib})
91
  add_custom_target(extern_ascend_cl DEPENDS ascendcl acl_op_compiler)
92
endif()
93

94 95
if(WITH_ASCEND_CL)
  macro(find_ascend_toolkit_version ascend_toolkit_version_info)
96
    file(READ ${ascend_toolkit_version_info} ASCEND_TOOLKIT_VERSION_CONTENTS)
97 98 99 100 101 102 103
    string(REGEX MATCH "version=([0-9]+\.[0-9]+\.(RC)?[0-9][.a-z0-9]*)"
                 ASCEND_TOOLKIT_VERSION "${ASCEND_TOOLKIT_VERSION_CONTENTS}")
    string(REGEX REPLACE "version=([0-9]+\.[0-9]+\.(RC)?[0-9][.a-z0-9]*)" "\\1"
                         ASCEND_TOOLKIT_VERSION "${ASCEND_TOOLKIT_VERSION}")
    string(REGEX REPLACE "[A-Z]|[a-z|\.]" "" CANN_VERSION
                         ${ASCEND_TOOLKIT_VERSION})
    string(SUBSTRING "${CANN_VERSION}000" 0 6 CANN_VERSION)
104
    add_definitions("-DCANN_VERSION_CODE=${CANN_VERSION}")
105
    if(NOT ASCEND_TOOLKIT_VERSION)
106
      set(ASCEND_TOOLKIT_VERSION "???")
107
    else()
108 109
      message(
        STATUS "Current Ascend Toolkit version is ${ASCEND_TOOLKIT_VERSION}")
110
    endif()
111
  endmacro()
112

113
  macro(find_ascend_driver_version ascend_driver_version_info)
114
    file(READ ${ascend_driver_version_info} ASCEND_DRIVER_VERSION_CONTENTS)
115 116 117 118
    string(REGEX MATCH "Version=([0-9]+\.[0-9]+\.[0-9]+)" ASCEND_DRIVER_VERSION
                 "${ASCEND_DRIVER_VERSION_CONTENTS}")
    string(REGEX REPLACE "Version=([0-9]+\.[0-9]+\.[0-9]+)" "\\1"
                         ASCEND_DRIVER_VERSION "${ASCEND_DRIVER_VERSION}")
119
    if(NOT ASCEND_DRIVER_VERSION)
120
      set(ASCEND_DRIVER_VERSION "???")
121
    else()
122 123
      message(
        STATUS "Current Ascend Driver version is ${ASCEND_DRIVER_VERSION}")
124
    endif()
125
  endmacro()
126

127 128 129 130 131
  if(WITH_ARM)
    set(ASCEND_TOOLKIT_DIR ${ASCEND_DIR}/ascend-toolkit/latest/arm64-linux)
  else()
    set(ASCEND_TOOLKIT_DIR ${ASCEND_DIR}/ascend-toolkit/latest/x86_64-linux)
  endif()
132

133 134
  find_ascend_toolkit_version(${ASCEND_TOOLKIT_DIR}/ascend_toolkit_install.info)
  find_ascend_driver_version(${ASCEND_DIR}/driver/version.info)
135
endif()