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