xref: /aosp_15_r20/external/pytorch/cmake/public/ComputeLibrary.cmake (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker# Build with Compute Library backend for the Arm architecture
2*da0073e9SAndroid Build Coastguard Worker# Note: Compute Library is available from: https://github.com/ARM-software/ComputeLibrary
3*da0073e9SAndroid Build Coastguard Worker#   and must be built separately. The location of the Compute Library build
4*da0073e9SAndroid Build Coastguard Worker#   must be set with the env var ACL_ROOT_DIR. This path will be checked later
5*da0073e9SAndroid Build Coastguard Worker#   as part of FindACL.cmake in oneDNN.
6*da0073e9SAndroid Build Coastguard Worker
7*da0073e9SAndroid Build Coastguard Workerif(NOT USE_MKLDNN_ACL)
8*da0073e9SAndroid Build Coastguard Worker    RETURN()
9*da0073e9SAndroid Build Coastguard Workerendif()
10*da0073e9SAndroid Build Coastguard Worker
11*da0073e9SAndroid Build Coastguard Workerset(DNNL_AARCH64_USE_ACL ON CACHE BOOL "" FORCE)
12*da0073e9SAndroid Build Coastguard Worker
13*da0073e9SAndroid Build Coastguard Worker# Check the Compute Library version number.
14*da0073e9SAndroid Build Coastguard Worker# Note: oneDNN / MKL-DNN v2.2 onwards will check the Compute Library version
15*da0073e9SAndroid Build Coastguard Worker#   the version check here can be removed once PyTorch transitions to v2.2.
16*da0073e9SAndroid Build Coastguard Workerset(ACL_MINIMUM_VERSION "21.02")
17*da0073e9SAndroid Build Coastguard Worker
18*da0073e9SAndroid Build Coastguard Workerfile(GLOB_RECURSE ACL_VERSION_FILE $ENV{ACL_ROOT_DIR}/*/arm_compute_version.embed)
19*da0073e9SAndroid Build Coastguard Worker
20*da0073e9SAndroid Build Coastguard Workerif("${ACL_VERSION_FILE}" STREQUAL "")
21*da0073e9SAndroid Build Coastguard Worker  message(WARNING "Build may fail: Could not determine ACL version (minimum required is ${ACL_MINIMUM_VERSION})")
22*da0073e9SAndroid Build Coastguard Workerelse()
23*da0073e9SAndroid Build Coastguard Worker  file(READ ${ACL_VERSION_FILE} ACL_VERSION_STRING)
24*da0073e9SAndroid Build Coastguard Worker  string(REGEX MATCH "v([0-9]+\\.[0-9]+)" ACL_VERSION ${ACL_VERSION_STRING})
25*da0073e9SAndroid Build Coastguard Worker  set(ACL_VERSION "${CMAKE_MATCH_1}")
26*da0073e9SAndroid Build Coastguard Worker
27*da0073e9SAndroid Build Coastguard Worker  if(${ACL_VERSION} VERSION_EQUAL "0.0")
28*da0073e9SAndroid Build Coastguard Worker    # Unreleased ACL versions come with version string "v0.0-unreleased", and may not be compatible with oneDNN.
29*da0073e9SAndroid Build Coastguard Worker    # It is recommended to use the latest release of ACL.
30*da0073e9SAndroid Build Coastguard Worker    message(WARNING "Build may fail: Using unreleased ACL version (minimum required is ${ACL_MINIMUM_VERSION})")
31*da0073e9SAndroid Build Coastguard Worker  elseif(${ACL_VERSION} VERSION_LESS ${ACL_MINIMUM_VERSION})
32*da0073e9SAndroid Build Coastguard Worker    message(FATAL_ERROR "Detected ACL version ${ACL_VERSION}, but minimum required is ${ACL_MINIMUM_VERSION}")
33*da0073e9SAndroid Build Coastguard Worker  endif()
34*da0073e9SAndroid Build Coastguard Workerendif()
35