From 90d15b985dbefd730941cbc79997baa0089dc4f3 Mon Sep 17 00:00:00 2001 From: David Svantesson Date: Thu, 8 Jun 2023 10:05:59 +0000 Subject: Bazel and CMake optional fp16 support Resolves ONCPUML-1274 Signed-off-by: David Svantesson Change-Id: I1d189596cfce5be87a18c8065d683700b3c9960f Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9745 Tested-by: Arm Jenkins Reviewed-by: SiCong Li Comments-Addressed: Arm Jenkins Benchmark: Arm Jenkins --- .bazelrc | 1 + BUILD.bazel | 58 +++++++--- CMakeLists.txt | 40 +++---- cmake/Options.cmake | 6 +- examples/BUILD.bazel | 240 ++++++++++++++++++++++++++++++---------- scripts/generate_build_files.py | 4 +- scripts/print_version_file.py | 23 +++- src/BUILD.bazel | 2 +- src/CMakeLists.txt | 4 +- tests/BUILD.bazel | 32 +++--- tests/framework/BUILD.bazel | 7 +- 11 files changed, 299 insertions(+), 118 deletions(-) diff --git a/.bazelrc b/.bazelrc index d6a5e62871..1dbbedc8bd 100644 --- a/.bazelrc +++ b/.bazelrc @@ -38,3 +38,4 @@ build --flag_alias=openmp=//:openmp build --flag_alias=cppthreads=//:cppthreads build --flag_alias=enable_bf16_validation=//:enable_bf16_validation build --flag_alias=enable_sve_validation=//:enable_sve_validation +build --flag_alias=arch=//:arch diff --git a/BUILD.bazel b/BUILD.bazel index 582a979044..3a7d941a0e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -78,6 +78,15 @@ bool_flag( visibility = ["//visibility:public"], ) +string_flag( + name = "arch", + build_setting_default = "armv8-a", + values = [ + "armv8-a", + "armv8.2-a+fp16" + ] +) + #--------------------------------------------------------------------- # Flag variables config_setting( @@ -129,6 +138,20 @@ config_setting( }, ) +config_setting( + name = "arch_armv8-a", + flag_values = { + "arch": "armv8-a" + } +) + +config_setting( + name = "arch_armv8.2-a+fp16", + flag_values = { + "arch": "armv8.2-a+fp16" + } +) + #--------------------------------------------------------------------- # Common defines used for all targets @@ -138,9 +161,7 @@ cc_library( "ENABLE_NEON", "ARM_COMPUTE_CPU_ENABLED", "ARM_COMPUTE_ENABLE_NEON", - "ARM_COMPUTE_ENABLE_FP16", "ARM_COMPUTE_ENABLE_I8MM", - "ENABLE_FP16_KERNELS", "ENABLE_FP32_KERNELS", "ENABLE_QASYMM8_KERNELS", "ENABLE_QASYMM8_SIGNED_KERNELS", @@ -148,7 +169,7 @@ cc_library( "ENABLE_INTEGER_KERNELS", "ENABLE_NHWC_KERNELS", "ENABLE_NCHW_KERNELS", - "DARM_COMPUTE_GRAPH_ENABLED", + "ARM_COMPUTE_GRAPH_ENABLED", "ARM_COMPUTE_ENABLE_SVEF32MM", "ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS", "_GLIBCXX_USE_NANOSLEEP" @@ -170,6 +191,11 @@ cc_library( select({ "//:openmp_flag": ["ARM_COMPUTE_OPENMP_SCHEDULER"], "//conditions:default": [], + }) + + select({ + "//:arch_armv8-a": [], + "//:arch_armv8.2-a+fp16": ["ENABLE_FP16_KERNELS", "ARM_COMPUTE_ENABLE_FP16"], + "//conditions:default": [], }), visibility = ["//visibility:public"], ) @@ -178,9 +204,9 @@ cc_library( # Rule for creating file "arm_compute_version.embed" genrule( name = "create_version_file", - srcs = [".git/HEAD"], + srcs = ["SConscript"], outs = ["arm_compute_version.embed"], - cmd = "$(location //scripts:print_version_file) bazel-build-options `cat $(location :.git/HEAD)` > $@", + cmd = "$(location //scripts:print_version_file) 'n/a' 'n/a' 'true' > $@", tools = ["//scripts:print_version_file"], visibility = ["//visibility:public"], ) @@ -191,9 +217,11 @@ genrule( cc_library( name = "arm_compute_graph", srcs = ["//src:arm_compute_graph_srcs"], - copts = [ - "-march=armv8.2-a+fp16", - ] + select({ + copts = [] + select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }) + select({ "//:debug_flag": [ "-O0", "-g", @@ -211,7 +239,7 @@ cc_library( }), visibility = ["//visibility:public"], deps = [ - "arm_compute_core", + "arm_compute", "//:common_defines", "//arm_compute:graph_headers", ], @@ -323,8 +351,8 @@ cc_library( # Core and Runtime library cc_library( - name = "arm_compute_core", - srcs = ["//src:arm_compute_core_srcs"], + name = "arm_compute", + srcs = ["//src:arm_compute_srcs"], hdrs = glob([ "core/NEON/kernels/**/*.h", "core/NEON/kernels/**/*.hpp", @@ -332,9 +360,11 @@ cc_library( ]) + [ "//:create_version_file", ], - copts = [ - "-march=armv8.2-a+fp16", - ] + select({ + copts = [] + select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }) + select({ "//:debug_flag": [ "-O0", "-g", diff --git a/CMakeLists.txt b/CMakeLists.txt index 94ae15fea5..4f8fc4afc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -185,13 +185,13 @@ target_include_directories( # --------------------------------------------------------------------- # Core Library -add_library(arm_compute_core "") -target_compile_options(arm_compute_core PRIVATE "-march=armv8.2-a+fp16") -target_compile_definitions(arm_compute_core PRIVATE ARM_COMPUTE_ENABLE_BF16) -target_compile_definitions(arm_compute_core PRIVATE ENABLE_SVE) -target_compile_definitions(arm_compute_core PRIVATE ARM_COMPUTE_ENABLE_SVE) +add_library(arm_compute "") +target_compile_options(arm_compute PRIVATE "-march=${ARM_COMPUTE_ARCH}") +target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_BF16) +target_compile_definitions(arm_compute PRIVATE ENABLE_SVE) +target_compile_definitions(arm_compute PRIVATE ARM_COMPUTE_ENABLE_SVE) target_include_directories( - arm_compute_core + arm_compute PUBLIC $ $ ${CMAKE_CURRENT_SOURCE_DIR} @@ -202,17 +202,17 @@ target_include_directories( src/core/NEON/kernels/convolution/common src/core/NEON/kernels/arm_conv/depthwise src/core/NEON/kernels/convolution/winograd) -target_compile_options(arm_compute_core PUBLIC ${COMMON_CXX_FLAGS}) +target_compile_options(arm_compute PUBLIC ${COMMON_CXX_FLAGS}) -add_library(ArmCompute::Core ALIAS arm_compute_core) +add_library(ArmCompute::Core ALIAS arm_compute) target_link_libraries( - arm_compute_core PUBLIC arm_compute_sve arm_compute_sve2) + arm_compute PUBLIC arm_compute_sve arm_compute_sve2) # --------------------------------------------------------------------- # Graph Library add_library(arm_compute_graph "") -target_compile_options(arm_compute_graph PRIVATE "-march=armv8.2-a+fp16") +target_compile_options(arm_compute_graph PRIVATE "-march=${ARM_COMPUTE_ARCH}") target_compile_definitions(arm_compute_graph PRIVATE ENABLE_SVE) target_compile_definitions(arm_compute_graph PRIVATE ARM_COMPUTE_ENABLE_SVE) # add_subdirectory(src/graph) @@ -244,7 +244,7 @@ if(ARM_COMPUTE_BUILD_TESTING) # target_compile_options(arm_compute_validation_framework PRIVATE # "-march=armv8.2-a") target_compile_options(arm_compute_validation_framework - PRIVATE "-march=armv8.2-a+fp16") + PRIVATE "-march=${ARM_COMPUTE_ARCH}") add_subdirectory(tests) target_include_directories( @@ -256,13 +256,13 @@ if(ARM_COMPUTE_BUILD_TESTING) PUBLIC ${COMMON_CXX_FLAGS}) target_link_libraries( arm_compute_validation_framework - PUBLIC arm_compute_core arm_compute_graph) + PUBLIC arm_compute arm_compute_graph) # --------------------------------------------------------------------- # Validation Binary add_executable(arm_compute_validation "") - target_compile_options(arm_compute_validation PRIVATE "-march=armv8.2-a+fp16") + target_compile_options(arm_compute_validation PRIVATE "-march=${ARM_COMPUTE_ARCH}") if(ARM_COMPUTE_ENABLE_BF16_VALIDATION) target_compile_definitions(arm_compute_validation PRIVATE ARM_COMPUTE_ENABLE_BF16) endif() @@ -277,7 +277,7 @@ if(ARM_COMPUTE_BUILD_TESTING) "${CMAKE_BINARY_DIR}/validation") target_link_libraries( arm_compute_validation - PUBLIC arm_compute_core arm_compute_graph arm_compute_validation_framework + PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework arm_compute_sve) target_link_directories(arm_compute_validation PUBLIC tests) @@ -285,7 +285,7 @@ if(ARM_COMPUTE_BUILD_TESTING) # Benchmark Binary add_executable(arm_compute_benchmark) - target_compile_options(arm_compute_benchmark PRIVATE "-march=armv8.2-a+fp16") + target_compile_options(arm_compute_benchmark PRIVATE "-march=${ARM_COMPUTE_ARCH}") add_subdirectory(tests/benchmark) target_compile_options(arm_compute_benchmark PUBLIC ${COMMON_CXX_FLAGS}) @@ -293,7 +293,7 @@ if(ARM_COMPUTE_BUILD_TESTING) arm_compute_benchmark PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/validation") target_link_libraries( - arm_compute_benchmark PUBLIC arm_compute_core arm_compute_graph + arm_compute_benchmark PUBLIC arm_compute arm_compute_graph arm_compute_validation_framework) endif() # ARM_COMPUTE_BUILD_TESTING @@ -309,22 +309,22 @@ if(ARM_COMPUTE_BUILD_EXAMPLES) add_executable( ${test_name} "examples/${test_name}.cpp" utils/Utils.cpp utils/GraphUtils.cpp utils/CommonGraphOptions.cpp) - target_compile_options(${test_name} PRIVATE "-march=armv8.2-a+fp16") + target_compile_options(${test_name} PRIVATE "-march=${ARM_COMPUTE_ARCH}") set_target_properties( ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/examples") - target_link_libraries(${test_name} PUBLIC arm_compute_core + target_link_libraries(${test_name} PUBLIC arm_compute arm_compute_graph arm_compute_sve) endforeach() # NEON Examples foreach(test_name ${EXAMPLE_NEON_NAMES}) add_executable(${test_name} "examples/${test_name}.cpp" utils/Utils.cpp) - target_compile_options(${test_name} PRIVATE "-march=armv8.2-a+fp16") + target_compile_options(${test_name} PRIVATE "-march=${ARM_COMPUTE_ARCH}") set_target_properties( ${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/examples") - target_link_libraries(${test_name} PUBLIC arm_compute_core) + target_link_libraries(${test_name} PUBLIC arm_compute) endforeach() endif() # ARM_COMPUTE_BUILD_EXAMPLES diff --git a/cmake/Options.cmake b/cmake/Options.cmake index a4ef135bdf..bc51cbbc0d 100644 --- a/cmake/Options.cmake +++ b/cmake/Options.cmake @@ -43,6 +43,8 @@ if(ARM_COMPUTE_LOGGING) add_definitions(-DARM_COMPUTE_LOGGING_ENABLED) endif() +set(ARM_COMPUTE_ARCH armv8-a CACHE STRING "Architecture to use") + # --------------------------------------------------------------------- # Backends @@ -52,9 +54,7 @@ option(ARM_COMPUTE_ENABLE_SVE_VALIDATION "" OFF) option(ENABLE_NEON "Enable Arm® Neon™ support" ON) option(ARM_COMPUTE_CPU_ENABLED "" ON) option(ARM_COMPUTE_ENABLE_NEON "" ON) -option(ARM_COMPUTE_ENABLE_FP16 "" ON) option(ARM_COMPUTE_ENABLE_I8MM "" ON) -option(ENABLE_FP16_KERNELS "" ON) option(ENABLE_FP32_KERNELS "" ON) option(ENABLE_QASYMM8_KERNELS "" ON) option(ENABLE_QASYMM8_SIGNED_KERNELS "" ON) @@ -65,6 +65,8 @@ option(ENABLE_NCHW_KERNELS "" ON) option(ARM_COMPUTE_GRAPH_ENABLED "" ON) option(ARM_COMPUTE_ENABLE_SVEF32MM "" ON) option(ARM_COMPUTE_ENABLE_FIXED_FORMAT_KERNELS "" ON) +option(ENABLE_FP16_KERNELS "" OFF) +option(ARM_COMPUTE_ENABLE_FP16 "" OFF) if(ENABLE_NEON) add_definitions(-DENABLE_NEON) diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel index f2a22dba54..ad9abf50a2 100644 --- a/examples/BUILD.bazel +++ b/examples/BUILD.bazel @@ -26,10 +26,14 @@ cc_binary( name = "neon_cnn", srcs = ["neon_cnn.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -39,10 +43,14 @@ cc_binary( cc_binary( name = "neon_copy_objects", srcs = ["neon_copy_objects.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -52,10 +60,14 @@ cc_binary( cc_binary( name = "neon_gemm_qasymm8", srcs = ["neon_gemm_qasymm8.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -65,10 +77,14 @@ cc_binary( cc_binary( name = "neon_permute", srcs = ["neon_permute.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -78,10 +94,14 @@ cc_binary( cc_binary( name = "neon_scale", srcs = ["neon_scale.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -91,10 +111,14 @@ cc_binary( cc_binary( name = "neon_sgemm", srcs = ["neon_sgemm.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -107,10 +131,14 @@ cc_binary( cc_binary( name = "graph_alexnet", srcs = ["graph_alexnet.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -120,10 +148,14 @@ cc_binary( cc_binary( name = "graph_deepspeech_v0_4_1", srcs = ["graph_deepspeech_v0_4_1.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -136,10 +168,14 @@ cc_binary( "graph_edsr.cpp", "graph_edsr.h", ], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -149,10 +185,14 @@ cc_binary( cc_binary( name = "graph_googlenet", srcs = ["graph_googlenet.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -162,10 +202,14 @@ cc_binary( cc_binary( name = "graph_inception_resnet_v1", srcs = ["graph_inception_resnet_v1.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -175,10 +219,14 @@ cc_binary( cc_binary( name = "graph_inception_resnet_v2", srcs = ["graph_inception_resnet_v2.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -188,10 +236,14 @@ cc_binary( cc_binary( name = "graph_inception_v3", srcs = ["graph_inception_v3.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -201,10 +253,14 @@ cc_binary( cc_binary( name = "graph_inception_v4", srcs = ["graph_inception_v4.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -214,10 +270,14 @@ cc_binary( cc_binary( name = "graph_lenet", srcs = ["graph_lenet.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -227,10 +287,14 @@ cc_binary( cc_binary( name = "graph_mobilenet", srcs = ["graph_mobilenet.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -240,10 +304,14 @@ cc_binary( cc_binary( name = "graph_mobilenet_v2", srcs = ["graph_mobilenet_v2.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -253,10 +321,14 @@ cc_binary( cc_binary( name = "graph_resnet12", srcs = ["graph_resnet12.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -266,10 +338,14 @@ cc_binary( cc_binary( name = "graph_resnet50", srcs = ["graph_resnet50.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -279,10 +355,14 @@ cc_binary( cc_binary( name = "graph_resnet_v2_50", srcs = ["graph_resnet_v2_50.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -292,10 +372,14 @@ cc_binary( cc_binary( name = "graph_resnext50", srcs = ["graph_resnext50.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -305,10 +389,14 @@ cc_binary( cc_binary( name = "graph_shufflenet", srcs = ["graph_shufflenet.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -318,10 +406,14 @@ cc_binary( cc_binary( name = "graph_squeezenet", srcs = ["graph_squeezenet.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -331,10 +423,14 @@ cc_binary( cc_binary( name = "graph_squeezenet_v1_1", srcs = ["graph_squeezenet_v1_1.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -344,10 +440,14 @@ cc_binary( cc_binary( name = "graph_srcnn955", srcs = ["graph_srcnn955.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -357,10 +457,14 @@ cc_binary( cc_binary( name = "graph_ssd_mobilenet", srcs = ["graph_ssd_mobilenet.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -370,10 +474,14 @@ cc_binary( cc_binary( name = "graph_vgg16", srcs = ["graph_vgg16.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -383,10 +491,14 @@ cc_binary( cc_binary( name = "graph_vgg19", srcs = ["graph_vgg19.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -396,10 +508,14 @@ cc_binary( cc_binary( name = "graph_vgg_vdsr", srcs = ["graph_vgg_vdsr.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", @@ -409,10 +525,14 @@ cc_binary( cc_binary( name = "graph_yolov3", srcs = ["graph_yolov3.cpp"], - copts = ["-march=armv8.2-a+fp16"], + copts = select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = False, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//include", "//utils", diff --git a/scripts/generate_build_files.py b/scripts/generate_build_files.py index beb32d06b8..0ca27179eb 100644 --- a/scripts/generate_build_files.py +++ b/scripts/generate_build_files.py @@ -149,7 +149,7 @@ filegroup( ) filegroup( - name = "arm_compute_core_srcs", + name = "arm_compute_srcs", srcs = ["{line_separator.join(srcs_core)}"] + glob(["**/*.h", "**/*.hpp", @@ -186,7 +186,7 @@ target_sources( ) target_sources( - arm_compute_core + arm_compute PRIVATE {line_separator.join(srcs_core)} )""" diff --git a/scripts/print_version_file.py b/scripts/print_version_file.py index 6c50216f8b..a7654ff997 100644 --- a/scripts/print_version_file.py +++ b/scripts/print_version_file.py @@ -31,6 +31,25 @@ def make_version_file(build_args, git_hash): VERSION, build_args, git_hash.strip()) return build_info +def make_version_file_from_sconscript(build_args, git_hash): + VERSION = "v0.0-unreleased" + fp = None + if os.path.exists("external/compute_library/SConscript"): + fp = "external/compute_library/SConscript" + elif os.path.exists("SConscript"): + fp = "SConscript" + if fp: + with open(fp) as scons_file: + for line in scons_file: + if "VERSION = " in line: + VERSION = line.split("=")[-1].strip().replace("\"", "") + break + return "\"arm_compute_version=%s Build options: %s Git hash=%s\"" % ( + VERSION, build_args, git_hash.strip()) -if __name__ == "__main__": - print(make_version_file(sys.argv[1], sys.argv[2])) +if __name__ == "__main__": + if len(sys.argv) == 4 and sys.argv[3].lower() == "true": + print(make_version_file_from_sconscript(sys.argv[1], sys.argv[2])) + else: + print(make_version_file(sys.argv[1], sys.argv[2])) + diff --git a/src/BUILD.bazel b/src/BUILD.bazel index a675394de6..85e5650cdd 100644 --- a/src/BUILD.bazel +++ b/src/BUILD.bazel @@ -354,7 +354,7 @@ filegroup( ) filegroup( - name = "arm_compute_core_srcs", + name = "arm_compute_srcs", srcs = ["c/AclContext.cpp", "c/AclOperator.cpp", "c/AclQueue.cpp", diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0b7a0108fd..c847a62e2a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -105,7 +105,7 @@ target_sources( target_sources( arm_compute_sve PRIVATE - core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp + core/NEON/kernels/arm_conv/depthwise/interleaves/sve_s8q_3x3_dot.cpp core/NEON/kernels/arm_conv/depthwise/interleaves/sve_u8q_3x3_dot.cpp core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_direct.cpp core/NEON/kernels/arm_conv/depthwise/kernels/sme2_fp16_nhwc_3x3_s1_output2x2_mla_depthfirst/generic_indirect.cpp @@ -345,7 +345,7 @@ target_sources( ) target_sources( - arm_compute_core + arm_compute PRIVATE c/AclContext.cpp c/AclOperator.cpp diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index 13d78958e5..5763938d3c 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -34,9 +34,11 @@ cc_library( "validation/reference/*.h", "validation/**/*.h", ]), - copts = [ - "-march=armv8.2-a+fp16", - ] + select({ + copts = [] + select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }) + select({ "//:debug_flag": [ "-O0", "-g", @@ -54,7 +56,7 @@ cc_library( }), linkstatic = True, deps = [ - "//:arm_compute_core", + "//:arm_compute", "//:common_defines", "//tests/framework", ], @@ -74,9 +76,11 @@ cc_binary( "datasets/*.h", "instruments/*.h", ]), - copts = [ - "-march=armv8.2-a+fp16", - ] + select({ + copts = [] + select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }) + select({ "//:debug_flag": [ "-O0", "-g", @@ -95,12 +99,12 @@ cc_binary( linkstatic = True, deps = [ ":validation_framework", - "//:arm_compute_core", + "//:arm_compute", "//:arm_compute_graph", "//:common_defines", "//tests/framework", ], - local_defines = [] + + local_defines = [] + select({ "//:bf16_validation_flag": [ "ARM_COMPUTE_ENABLE_BF16", @@ -125,9 +129,11 @@ cc_binary( "benchmark/NEON/*.cpp", "*.cpp", ]), - copts = [ - "-march=armv8.2-a+fp16", - ] + select({ + copts = [] + select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }) + select({ "//:debug_flag": [ "-O0", "-g", @@ -147,6 +153,6 @@ cc_binary( deps = [ ":arm_compute_validation", ":validation_framework", - "//:arm_compute_core", + "//:arm_compute", ], ) diff --git a/tests/framework/BUILD.bazel b/tests/framework/BUILD.bazel index 084d12c991..17d5a15a11 100644 --- a/tests/framework/BUILD.bazel +++ b/tests/framework/BUILD.bazel @@ -46,8 +46,11 @@ cc_library( ]), copts = [ "-Wno-overloaded-virtual", - "-march=armv8.2-a+fp16", - ], + ] + select({ + "//:arch_armv8-a": ["-march=armv8-a"], + "//:arch_armv8.2-a+fp16": ["-march=armv8.2-a+fp16"], + "//conditions:default": ["-march=armv8-a"], + }), linkstatic = True, visibility = ["//visibility:public"], deps = [ -- cgit v1.2.1