From 72610dcf2d634c9c2919ad55245c5c91609e87eb Mon Sep 17 00:00:00 2001 From: Michele Di Giorgio Date: Wed, 18 Nov 2020 15:29:08 +0000 Subject: Remove 3rdparty submodule and internal_only build option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove 3rdparty submodule and allow to build external tests, examples and benchmarks using the Compute Library test framework. In order to use this option, the external tests directory must have the following structure: EXTERNAL_TESTS_DIR: └── tests ├── benchmark │   ├── CL │   ├── datasets │   ├── fixtures │   └── NEON └── validation    ├── CL     ├── datasets     ├── fixtures     └── NEON Then, the user can build the library with `external_tests_dir=`. Also, remove internal_only build option". Without the 3rdparty submodule, this build option is no longer needed. Resolves: COMPMID-3417, COMPMID-3419 Change-Id: Ib7bf8ec7b9b9317fd82012a96bf4a7b0be846c1b Signed-off-by: Michele Di Giorgio Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4704 Reviewed-by: Georgios Pinitas Tested-by: Arm Jenkins Comments-Addressed: Arm Jenkins --- .gitmodules | 4 ---- 3rdparty | 1 - SConstruct | 3 +-- docs/00_introduction.dox | 23 +++++++++++++++++++++++ examples/SConscript | 30 +++++++++++++++--------------- scripts/clang_tidy_rules.py | 7 ++----- tests/SConscript | 36 +++++++++++++++++------------------- 7 files changed, 58 insertions(+), 46 deletions(-) delete mode 100644 .gitmodules delete mode 160000 3rdparty diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index da9bc32fee..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "3rdparty"] - path = 3rdparty - url = https://eu-gerrit-1.euhpc.arm.com/VisualCompute/3rdparty - branch = master diff --git a/3rdparty b/3rdparty deleted file mode 160000 index 679eadd4df..0000000000 --- a/3rdparty +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 679eadd4df491b26b8b824690348e334ad588c75 diff --git a/SConstruct b/SConstruct index 15197a632f..b543bc0ebb 100644 --- a/SConstruct +++ b/SConstruct @@ -64,8 +64,7 @@ vars.AddVariables( PathVariable("install_dir", "Specify sub-folder for the install", "", PathVariable.PathAccept), BoolVariable("exceptions", "Enable/disable C++ exception support", True), PathVariable("linker_script", "Use an external linker script", "", PathVariable.PathAccept), - #FIXME Remove before release (And remove all references to INTERNAL_ONLY) - BoolVariable("internal_only", "Enable ARM internal only tests", False), + PathVariable("external_tests_dir", "Add examples, benchmarks and tests to the tests suite", "", PathVariable.PathAccept), ListVariable("custom_options", "Custom options that can be used to turn on/off features", "none", ["disable_mmla_fp"]), ListVariable("data_type_support", "Enable a list of data types to support", "all", ["qasymm8", "qasymm8_signed", "qsymm16", "fp16", "fp32"]), ("toolchain_prefix", "Override the toolchain prefix", ""), diff --git a/docs/00_introduction.dox b/docs/00_introduction.dox index 448025846b..189067c81f 100644 --- a/docs/00_introduction.dox +++ b/docs/00_introduction.dox @@ -1481,6 +1481,10 @@ To see the build options available simply run ```scons -h```: default: False actual: False + external_tests_dir: Add examples, benchmarks and tests to the tests suite from an external path ( /path/to/external_tests_dir ) + default: + actual: + @b debug / @b asserts: - With debug=1 asserts are enabled, and the library is built with symbols and no optimisations enabled. - With debug=0 and asserts=1: Optimisations are enabled and symbols are removed, however all the asserts are still present (This is about 20% slower than the release build) @@ -1535,6 +1539,25 @@ Example: @sa Scheduler::set +@b external_tests_dir Add examples, benchmarks and tests to the tests suite from an external path ( /path/to/external_tests_dir ) + +In order to use this option, the external tests directory must have the following structure: + + EXTERNAL_TESTS_DIR: + └── tests + ├── benchmark + │   ├── CL + │   ├── datasets + │   ├── fixtures + │   └── NEON + └── validation +    ├── CL +     ├── datasets +     ├── fixtures +     └── NEON + +Then, build the library with `external_tests_dir=`. + @subsection S3_2_linux Building for Linux @subsubsection S3_2_1_library How to build the library ? diff --git a/examples/SConscript b/examples/SConscript index cd07c6a15a..ff457faf38 100644 --- a/examples/SConscript +++ b/examples/SConscript @@ -131,19 +131,19 @@ if env['gles_compute']: alias = examples_env.Alias(example, prog) Default(alias) -#FIXME Delete 3rdparty builds before release -for file in Glob("#3rdparty/examples/graph_*.cpp"): - example = os.path.basename(os.path.splitext(str(file))[0]) - prog = None +if env['external_tests_dir']: + for file in Glob(env['external_tests_dir'] + "/examples/graph_*.cpp"): + example = os.path.basename(os.path.splitext(str(file))[0]) + prog = None - if env['os'] in ['android', 'bare_metal'] or env['standalone']: - prog = examples_env.Program(example, [examples_env.Object(source=file, target=example), utils, graph_utils], LIBS = examples_libs + arm_compute_graph_libs, LINKFLAGS=examples_env["LINKFLAGS"]+['-Wl,--whole-archive',graph_dependency,'-Wl,--no-whole-archive'] + extra_link_flags) - Depends(prog, graph_dependency) - prog = install_bin(prog) - else: - #-Wl,--allow-shlib-undefined: Ignore dependencies of dependencies - prog = examples_env.Program(example, [examples_env.Object(source=file, target=example), utils, graph_utils], LIBS = examples_libs + arm_compute_graph_libs, LINKFLAGS=examples_env["LINKFLAGS"]+['-Wl,--allow-shlib-undefined'] ) - Depends(prog, graph_dependency) - prog = install_bin(prog) - alias = examples_env.Alias(example, prog) - Default(alias) + if env['os'] in ['android', 'bare_metal'] or env['standalone']: + prog = examples_env.Program(example, [examples_env.Object(source=file, target=example), utils, graph_utils], LIBS = examples_libs + arm_compute_graph_libs, LINKFLAGS=examples_env["LINKFLAGS"]+['-Wl,--whole-archive',graph_dependency,'-Wl,--no-whole-archive'] + extra_link_flags) + Depends(prog, graph_dependency) + prog = install_bin(prog) + else: + #-Wl,--allow-shlib-undefined: Ignore dependencies of dependencies + prog = examples_env.Program(example, [examples_env.Object(source=file, target=example), utils, graph_utils], LIBS = examples_libs + arm_compute_graph_libs, LINKFLAGS=examples_env["LINKFLAGS"]+['-Wl,--allow-shlib-undefined'] ) + Depends(prog, graph_dependency) + prog = install_bin(prog) + alias = examples_env.Alias(example, prog) + Default(alias) diff --git a/scripts/clang_tidy_rules.py b/scripts/clang_tidy_rules.py index 1e24b042de..ddf25384f2 100755 --- a/scripts/clang_tidy_rules.py +++ b/scripts/clang_tidy_rules.py @@ -11,8 +11,7 @@ def get_list_includes(): "src/core/NEON/kernels/assembly " \ "src/core/NEON/kernels/convolution/winograd " \ "include/linux include " \ - ". " \ - "3rdparty/include kernels".split() + ". ".split() def get_list_flags( filename, arch): assert arch in ["armv7", "aarch64"] @@ -64,7 +63,6 @@ def filter_clang_tidy_lines( lines ): ("Utils.h" in line and "no member named 'unmap' in 'arm_compute::Tensor'" in line) or ("Utils.h" in line and "no member named 'map' in 'arm_compute::Tensor'" in line) or ("CPUUtils.cpp" in line and "'asm/hwcap.h' file not found" in line) or - "3rdparty" in line or ("'arm_compute_version.embed' file not found" in line) ): print_context=False continue @@ -119,8 +117,7 @@ def filter_clang_tidy_lines( lines ): ("GCKernelLibrary.cpp" in line and "warning: do not declare C-style arrays" in line) or ("Utils.h" in line and "warning: Use of zero-allocated memory" in line) or ("NEDepthwiseConvolutionLayerNativeKernel.cpp" in line and "misc-non-private-member-variables-in-classes" in line) or # This is to prevent false positive, should be reassessed with the newer clang-tidy - ("NEDepthwiseConvolutionLayerNativeKernel.cpp" in line and "cppcoreguidelines-pro-type-member-init" in line) or # This is to prevent false positive, should be reassessed with the newer clang-tidy - "3rdparty" in line): + ("NEDepthwiseConvolutionLayerNativeKernel.cpp" in line and "cppcoreguidelines-pro-type-member-init" in line)): # This is to prevent false positive, should be reassessed with the newer clang-tidy print_context=False continue diff --git a/tests/SConscript b/tests/SConscript index 6fc67af747..565aeac4a1 100644 --- a/tests/SConscript +++ b/tests/SConscript @@ -88,20 +88,16 @@ else: if env['os'] in ['bare_metal']: Import("bootcode_o") -#FIXME Delete before release -if env['internal_only']: - test_env.Append(CPPDEFINES=['INTERNAL_ONLY']) - -test_env.Append(CPPPATH = ["#3rdparty/include"]) -test_env.Append(LIBPATH = ["#3rdparty/%s/%s" % (env['os'], env['arch'])]) +if env['external_tests_dir']: + test_env.Append(CPPPATH = [env['external_tests_dir'] + "/include"]) + test_env.Append(LIBPATH = [env['external_tests_dir'] + "/%s/%s" % (env['os'], env['arch'])]) common_files = Glob('*.cpp') common_objects = [test_env.StaticObject(f) for f in common_files] files_benchmark = Glob('benchmark/*.cpp') -#FIXME Delete before release -if env['internal_only']: - files_benchmark += Glob('../3rdparty/tests/benchmark/*.cpp') +if env['external_tests_dir']: + files_benchmark += Glob(env['external_tests_dir'] + '/tests/benchmark/*.cpp') # Add unit tests files_validation = Glob('validation/UNIT/*/*.cpp') @@ -118,23 +114,20 @@ if env['opencl']: files_benchmark += Glob('benchmark/CL/*/' + filter_pattern) files_benchmark += Glob('benchmark/CL/' + filter_pattern) - #FIXME Delete before release - if env['internal_only']: - files_benchmark += Glob('../3rdparty/tests/benchmark/CL/' + filter_pattern) + if env['external_tests_dir']: + files_benchmark += Glob(env['external_tests_dir'] + '/tests/benchmark/CL/' + filter_pattern) files_validation += Glob('validation/CL/*/' + filter_pattern) files_validation += Glob('validation/CL/' + filter_pattern) - #FIXME Delete before release - if env['internal_only']: - files_validation += Glob('../3rdparty/tests/validation/CL/' + filter_pattern) + if env['external_tests_dir']: + files_validation += Glob(env['external_tests_dir'] + '/tests/validation/CL/' + filter_pattern) if env['neon']: filter_pattern = test_env['test_filter'] files_benchmark += Glob('benchmark/NEON/*/' + filter_pattern) files_benchmark += Glob('benchmark/NEON/' + filter_pattern) - #FIXME Delete before release - if env['internal_only']: - files_benchmark += Glob('../3rdparty/tests/benchmark/NEON/' + filter_pattern) + if env['external_tests_dir']: + files_benchmark += Glob(env['external_tests_dir'] + '/tests/benchmark/NEON/' + filter_pattern) files_validation += Glob('validation/NEON/' + filter_pattern) if env['os'] == 'bare_metal': @@ -143,6 +136,8 @@ if env['neon']: files_validation += Glob('validation/NEON/UNIT/TensorAllocator.cpp' + filter_pattern) else: files_validation += Glob('validation/NEON/*/' + filter_pattern) + if env['external_tests_dir']: + files_validation += Glob(env['external_tests_dir'] + '/tests/validation/NEON/' + filter_pattern) if env['gles_compute']: @@ -241,7 +236,10 @@ if test_env['benchmark_examples']: graph_utils = test_env.Object(source="../utils/GraphUtils.cpp", target="GraphUtils") graph_params = test_env.Object(source="../utils/CommonGraphOptions.cpp", target="CommonGraphOptions") arm_compute_benchmark_examples = [] - for examples_folder in [ "../examples", "../3rdparty/examples"]: + all_examples_folders = ["../examples"] + if env['external_tests_dir']: + all_examples_folders.append(env['external_tests_dir'] + "/examples") + for examples_folder in all_examples_folders: if test_env['neon']: for file in Glob("%s/neon_*.cpp" % examples_folder): example = "benchmark_" + os.path.basename(os.path.splitext(str(file))[0]) -- cgit v1.2.1