Skip to content

Commit 49b8f90

Browse files
author
Jenkins
committed
arm_compute v20.11
1 parent 18b685f commit 49b8f90

File tree

1,931 files changed

+112181
-84637
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,931 files changed

+112181
-84637
lines changed

Diff for: Android.bp

+88-71
Large diffs are not rendered by default.

Diff for: README.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ Please report issues here: https://github.com/ARM-software/ComputeLibrary/issues
1010

1111
**Make sure you are using the latest version of the library before opening an issue. Thanks**
1212

13+
Deprecation notice:
14+
- We have deprecated the GLES backend and it will be removed from the library in the release 21.05
15+
- We have deprecated the NEON and OpenCL computer vision functions and they will be removed in 21.05
16+
1317
News:
1418

1519
- [Gian Marco's talk on Performance Analysis for Optimizing Embedded Deep Learning Inference Software](https://www.embedded-vision.com/platinum-members/arm/embedded-vision-training/videos/pages/may-2019-embedded-vision-summit)
@@ -44,6 +48,3 @@ To indicate that you agree to the the terms of the DCO, you "sign off" your cont
4448
```Signed-off-by: John Doe <[email protected]>```
4549

4650
You must use your real name, no pseudonyms or anonymous contributions are accepted.
47-
48-
### Security Issues
49-
If you believe you have discovered a security issue please contact [email protected]

Diff for: SConscript

+17-20
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ import os.path
2424
import re
2525
import subprocess
2626

27-
VERSION = "v20.08"
28-
LIBRARY_VERSION_MAJOR = 20
27+
VERSION = "v20.11"
28+
LIBRARY_VERSION_MAJOR = 21
2929
LIBRARY_VERSION_MINOR = 0
3030
LIBRARY_VERSION_PATCH = 0
3131
SONAME_VERSION = str(LIBRARY_VERSION_MAJOR) + "." + str(LIBRARY_VERSION_MINOR) + "." + str(LIBRARY_VERSION_PATCH)
@@ -48,20 +48,6 @@ def build_library(name, sources, static=False, libs=[]):
4848
else:
4949
if env['set_soname']:
5050
obj = arm_compute_env.SharedLibrary(name, source=sources, SHLIBVERSION = SONAME_VERSION, LIBS = arm_compute_env["LIBS"] + libs)
51-
52-
symlinks = []
53-
# Manually delete symlinks or SCons will get confused:
54-
directory = os.path.dirname(obj[0].path)
55-
library_prefix = obj[0].path[:-(1 + len(SONAME_VERSION))]
56-
real_lib = "%s.%s" % (library_prefix, SONAME_VERSION)
57-
58-
for f in Glob("#%s.*" % library_prefix):
59-
if str(f) != real_lib:
60-
symlinks.append("%s/%s" % (directory,str(f)))
61-
62-
clean = arm_compute_env.Command('clean-%s' % str(obj[0]), [], Delete(symlinks))
63-
Default(clean)
64-
Depends(obj, clean)
6551
else:
6652
obj = arm_compute_env.SharedLibrary(name, source=sources, LIBS = arm_compute_env["LIBS"] + libs)
6753

@@ -178,6 +164,7 @@ arm_compute_env.Append(LIBS = ['dl'])
178164
core_files = Glob('src/core/*.cpp')
179165
core_files += Glob('src/core/CPP/*.cpp')
180166
core_files += Glob('src/core/CPP/kernels/*.cpp')
167+
core_files += Glob('src/core/helpers/*.cpp')
181168
core_files += Glob('src/core/utils/*.cpp')
182169
core_files += Glob('src/core/utils/helpers/*.cpp')
183170
core_files += Glob('src/core/utils/io/*.cpp')
@@ -228,11 +215,10 @@ if env['neon']:
228215
# build winograd/depthwise sources for either v7a / v8a
229216
core_files += Glob('src/core/NEON/kernels/convolution/*/*.cpp')
230217
core_files += Glob('src/core/NEON/kernels/convolution/winograd/*/*.cpp')
231-
arm_compute_env.Append(CPPPATH = ["arm_compute/core/NEON/kernels/convolution/common/",
232-
"arm_compute/core/NEON/kernels/convolution/winograd/",
233-
"arm_compute/core/NEON/kernels/convolution/depthwise/",
234-
"src/core/NEON/kernels/assembly/",
218+
arm_compute_env.Append(CPPPATH = ["src/core/NEON/kernels/convolution/common/",
235219
"src/core/NEON/kernels/convolution/winograd/",
220+
"src/core/NEON/kernels/convolution/depthwise/",
221+
"src/core/NEON/kernels/assembly/",
236222
"arm_compute/core/NEON/kernels/assembly/"])
237223

238224
graph_files += Glob('src/graph/backends/NEON/*.cpp')
@@ -245,6 +231,17 @@ if env['neon']:
245231
if "sve" in env['arch']:
246232
core_files += Glob('src/core/NEON/kernels/arm_gemm/kernels/sve_*/*.cpp')
247233

234+
if any(i in env['data_type_support'] for i in ['all', 'fp16']):
235+
core_files += Glob('src/core/NEON/kernels/*/impl/fp16_*.cpp')
236+
if any(i in env['data_type_support'] for i in ['all', 'fp32']):
237+
core_files += Glob('src/core/NEON/kernels/*/impl/fp32_*.cpp')
238+
if any(i in env['data_type_support'] for i in ['all', 'qasymm8']):
239+
core_files += Glob('src/core/NEON/kernels/*/impl/qasymm8_neon*.cpp')
240+
if any(i in env['data_type_support'] for i in ['all', 'qasymm8_signed']):
241+
core_files += Glob('src/core/NEON/kernels/*/impl/qasymm8_signed_*.cpp')
242+
if any(i in env['data_type_support'] for i in ['all', 'qsymm16']):
243+
core_files += Glob('src/core/NEON/kernels/*/impl/qsymm16_*.cpp')
244+
248245
runtime_files += Glob('src/runtime/NEON/*.cpp')
249246
runtime_files += Glob('src/runtime/NEON/functions/*.cpp')
250247
runtime_files += Glob('src/runtime/NEON/functions/assembly/*.cpp')

Diff for: SConstruct

+30-8
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ import os
2525
import subprocess
2626

2727
def version_at_least(version, required):
28-
end = min(len(version), len(required))
2928

30-
for i in range(0, end, 2):
31-
if int(version[i]) < int(required[i]):
29+
version_list = version.split('.')
30+
required_list = required.split('.')
31+
end = min(len(version_list), len(required_list))
32+
for i in range(0, end):
33+
if int(version_list[i]) < int(required_list[i]):
3234
return False
33-
elif int(version[i]) > int(required[i]):
35+
elif int(version_list[i]) > int(required_list[i]):
3436
return True
3537

3638
return True
@@ -42,7 +44,7 @@ vars.AddVariables(
4244
BoolVariable("logging", "Logging (this flag is forced to 1 for debug=1)", False),
4345
EnumVariable("arch", "Target Architecture", "armv7a",
4446
allowed_values=("armv7a", "arm64-v8a", "arm64-v8.2-a", "arm64-v8.2-a-sve", "x86_32", "x86_64",
45-
"armv8a", "armv8.2-a", "armv8.2-a-sve", "armv8.6-a", "x86")),
47+
"armv8a", "armv8.2-a", "armv8.2-a-sve", "armv8.6-a", "armv8.6-a-sve", "x86")),
4648
EnumVariable("estate", "Execution State", "auto", allowed_values=("auto", "32", "64")),
4749
EnumVariable("os", "Target OS", "linux", allowed_values=("linux", "android", "tizen", "bare_metal")),
4850
EnumVariable("build", "Build type", "cross_compile", allowed_values=("native", "cross_compile", "embed_only")),
@@ -62,6 +64,8 @@ vars.AddVariables(
6264
PathVariable("install_dir", "Specify sub-folder for the install", "", PathVariable.PathAccept),
6365
BoolVariable("exceptions", "Enable/disable C++ exception support", True),
6466
PathVariable("linker_script", "Use an external linker script", "", PathVariable.PathAccept),
67+
ListVariable("custom_options", "Custom options that can be used to turn on/off features", "none", ["disable_mmla_fp"]),
68+
ListVariable("data_type_support", "Enable a list of data types to support", "all", ["qasymm8", "qasymm8_signed", "qsymm16", "fp16", "fp32"]),
6569
("toolchain_prefix", "Override the toolchain prefix", ""),
6670
("compiler_prefix", "Override the compiler prefix", ""),
6771
("extra_cxx_flags", "Extra CXX flags to be appended to the build command", ""),
@@ -204,7 +208,9 @@ elif 'v8' in env['arch']:
204208
env.Append(CXXFLAGS = ['-march=armv8-a'])
205209

206210
if 'v8.6-a' in env['arch']:
207-
env.Append(CPPDEFINES = ['MMLA_INT8', 'MMLA_FP32', 'V8P6', 'V8P6_BF', 'ARM_COMPUTE_FORCE_BF16'])
211+
env.Append(CPPDEFINES = ['MMLA_INT8', 'V8P6', 'V8P6_BF', 'ARM_COMPUTE_FORCE_BF16'])
212+
if "disable_mmla_fp" not in env['custom_options']:
213+
env.Append(CPPDEFINES = ['MMLA_FP32'])
208214

209215
elif 'x86' in env['arch']:
210216
if env['estate'] == '32':
@@ -256,7 +262,7 @@ env['RANLIB'] = prefix + "ranlib"
256262

257263
if not GetOption("help"):
258264
try:
259-
compiler_ver = subprocess.check_output(env['CXX'].split() + ["-dumpversion"]).strip()
265+
compiler_ver = subprocess.check_output(env['CXX'].split() + ["-dumpversion"]).decode().strip()
260266
except OSError:
261267
print("ERROR: Compiler '%s' not found" % env['CXX'])
262268
Exit(1)
@@ -277,6 +283,21 @@ if not GetOption("help"):
277283
if compiler_ver == '4.8.3':
278284
env.Append(CXXFLAGS = ['-Wno-array-bounds'])
279285

286+
if not version_at_least(compiler_ver, '7.0.0') and env['os'] == 'bare_metal':
287+
env.Append(LINKFLAGS = ['-fstack-protector-strong'])
288+
289+
if env['data_type_support']:
290+
if any(i in env['data_type_support'] for i in ['all', 'fp16']):
291+
env.Append(CXXFLAGS = ['-DENABLE_FP16_KERNELS'])
292+
if any(i in env['data_type_support'] for i in ['all', 'fp32']):
293+
env.Append(CXXFLAGS = ['-DENABLE_FP32_KERNELS'])
294+
if any(i in env['data_type_support'] for i in ['all', 'qasymm8']):
295+
env.Append(CXXFLAGS = ['-DENABLE_QASYMM8_KERNELS'])
296+
if any(i in env['data_type_support'] for i in ['all', 'qasymm8_signed']):
297+
env.Append(CXXFLAGS = ['-DENABLE_QASYMM8_SIGNED_KERNELS'])
298+
if any(i in env['data_type_support'] for i in ['all', 'qsymm16']):
299+
env.Append(CXXFLAGS = ['-DENABLE_QSYMM16_KERNELS'])
300+
280301
if env['standalone']:
281302
env.Append(CXXFLAGS = ['-fPIC'])
282303
env.Append(LINKFLAGS = ['-static-libgcc','-static-libstdc++'])
@@ -293,6 +314,8 @@ elif env['os'] == 'bare_metal':
293314
env.Append(CXXFLAGS = ['-fPIC'])
294315
env.Append(CPPDEFINES = ['NO_MULTI_THREADING'])
295316
env.Append(CPPDEFINES = ['BARE_METAL'])
317+
if env['os'] == 'linux' and env['arch'] == 'armv7a':
318+
env.Append(CXXFLAGS = [ '-Wno-psabi' ])
296319

297320
if env['opencl']:
298321
if env['os'] in ['bare_metal'] or env['standalone']:
@@ -338,7 +361,6 @@ for dirname in os.listdir("./include"):
338361

339362
Export('version_at_least')
340363

341-
342364
if env['gles_compute'] and env['os'] != 'android':
343365
env.Append(CPPPATH = ['#/include/linux'])
344366

Diff for: SECURITY.md

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
**Reporting vulnerabilities**
2+
3+
Arm takes security issues seriously and welcomes feedback from researchers and the security community in order to improve the security of its products and services. We operate a coordinated disclosure policy for disclosing vulnerabilities and other security issues.
4+
5+
Security issues can be complex and one single timescale doesn't fit all circumstances. We will make best endeavours to inform you when we expect security notifications and fixes to be available and facilitate coordinated disclosure when notifications and patches/mitigations are available.
6+
7+
**Report**
8+
9+
For all security issues, contact Arm by email at [[email protected]](mailto:[email protected]).
10+
11+
12+
**Secure submission using PGP**
13+
14+
We support and encourage secure submission of vulnerability reports using PGP, using the key below. If you would like replies to be encrypted, please provide your own public key through a secure mechanism.
15+
16+
~~~
17+
-----BEGIN PGP PUBLIC KEY BLOCK-----
18+
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
65+
=EaN7
66+
-----END PGP PUBLIC KEY BLOCK-----
67+
~~~
68+
69+
For more information visit https://developer.arm.com/support/arm-security-updates/report-security-vulnerabilities

Diff for: arm_compute/core/CL/CLCompileContext.h

+8
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@ class Program final
118118
{
119119
return _name;
120120
}
121+
/** Returns program binary data.
122+
*
123+
* @return Program's binary data.
124+
*/
125+
const std::vector<unsigned char> &binary() const
126+
{
127+
return _binary;
128+
}
121129
/** User-defined conversion to the underlying CL program.
122130
*
123131
* @return The CL program object.

0 commit comments

Comments
 (0)