Skip to content

Commit f44f09d

Browse files
author
Jenkins
committed
Compute Library v24.11
1 parent c61bd33 commit f44f09d

File tree

137 files changed

+4412
-1659
lines changed

Some content is hidden

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

137 files changed

+4412
-1659
lines changed

Android.bp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,11 +1025,14 @@ cc_library_static {
10251025
"src/runtime/experimental/operators/CpuActivation.cpp",
10261026
"src/runtime/experimental/operators/CpuAdd.cpp",
10271027
"src/runtime/experimental/operators/CpuDepthwiseConv2d.cpp",
1028+
"src/runtime/experimental/operators/CpuDequantize.cpp",
10281029
"src/runtime/experimental/operators/CpuElementwise.cpp",
1030+
"src/runtime/experimental/operators/CpuGEMMLowp.cpp",
10291031
"src/runtime/experimental/operators/CpuGemm.cpp",
10301032
"src/runtime/experimental/operators/CpuGemmConv2d.cpp",
10311033
"src/runtime/experimental/operators/CpuGemmDirectConv2d.cpp",
10321034
"src/runtime/experimental/operators/CpuMul.cpp",
1035+
"src/runtime/experimental/operators/CpuQuantize.cpp",
10331036
"src/runtime/experimental/operators/CpuSoftmax.cpp",
10341037
"src/runtime/experimental/operators/CpuSub.cpp",
10351038
"src/runtime/experimental/operators/CpuTranspose.cpp",

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
2828
list(APPEND CMAKE_MESSAGE_CONTEXT ArmCompute)
2929
project(
3030
ArmCompute
31-
VERSION 42.0.0
31+
VERSION 43.0.0
3232
DESCRIPTION
3333
"The Arm Compute Library is a collection of low-level machine learning functions optimized for Arm® Cortex®-A CPU and Arm® Mali™ GPU architectures"
3434
LANGUAGES C CXX ASM)

LICENSES/Apache-2.0.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# SPDX-FileCopyrightText: 2008-2023 The Khronos Group Inc.
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
Licensed under the Apache License, Version 2.0 (the "License");
6+
you may not use this file except in compliance with the License.
7+
You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.

LICENSE renamed to LICENSES/MIT.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
MIT License
1+
# SPDX-FileCopyrightText: 2012-2017 Christian Rau
2+
# SPDX-FileCopyrightText: 2017 Leon Merten Lohse
3+
# SPDX-FileCopyrightText: 2017 Sean Barrett
4+
# SPDX-FileCopyrightText: 2017-2024 Arm Limited
5+
#
6+
# SPDX-License-Identifier: MIT
27

3-
Copyright (c) 2017-2024 Arm Limited
8+
MIT License
49

510
Permission is hereby granted, free of charge, to any person obtaining a copy
611
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<img src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png"/><br><br>
1010
</div>
1111

12-
# Compute Library ![](https://img.shields.io/badge/latest_release-24.09-green)
12+
# Compute Library ![](https://img.shields.io/badge/latest_release-24.11-green)
1313

1414

1515
The Compute Library is a collection of low-level machine learning functions optimized for Arm® Cortex®-A, Arm® Neoverse® and Arm® Mali™ GPUs architectures.<br>
@@ -37,7 +37,7 @@ Key Features:
3737
<br>
3838

3939
## Documentation
40-
[![Documentation](https://img.shields.io/badge/documentation-24.09-green)](https://artificial-intelligence.sites.arm.com/computelibrary/v24.09/index.xhtml)
40+
[![Documentation](https://img.shields.io/badge/documentation-24.11-green)](https://artificial-intelligence.sites.arm.com/computelibrary/v24.11/index.xhtml)
4141

4242
> Note: The documentation includes the reference API, changelogs, build guide, contribution guide, errata, etc.
4343
@@ -50,22 +50,22 @@ All the binaries can be downloaded from [here](https://github.com/ARM-software/C
5050

5151
| Platform | Operating System | Release archive (Download) |
5252
| -------------- | ---------------- | -------------------------- |
53-
| Raspberry Pi 4 | Linux® 32bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-armv7a-cpu-bin.tar.gz) |
54-
| Raspberry Pi 4 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-bin.tar.gz) |
55-
| Odroid N2 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-gpu-bin.tar.gz) |
56-
| HiKey960 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-gpu-bin.tar.gz) |
53+
| Raspberry Pi 4 | Linux® 32bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-armv7a-cpu-bin.tar.gz) |
54+
| Raspberry Pi 4 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-bin.tar.gz) |
55+
| Odroid N2 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-gpu-bin.tar.gz) |
56+
| HiKey960 | Linux® 64bit | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-gpu-bin.tar.gz) |
5757

5858
<br>
5959

6060
| Architecture | Operating System | Release archive (Download) |
6161
| ------------ | ---------------- | -------------------------- |
62-
| armv7 | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-armv7a-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-armv7a-cpu-gpu-bin.tar.gz) |
63-
| arm64-v8a | Android™ | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-android-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-android-aarch64-cpu-gpu-bin.tar.gz) |
64-
| arm64-v8a | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.09/arm_compute-v24.09-linux-aarch64-cpu-gpu-bin.tar.gz) |
62+
| armv7 | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-armv7a-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-armv7a-cpu-gpu-bin.tar.gz) |
63+
| arm64-v8a | Android™ | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-android-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-android-aarch64-cpu-gpu-bin.tar.gz) |
64+
| arm64-v8a | Linux® | [![](https://img.shields.io/badge/build-neon-orange)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-bin.tar.gz) [![](https://img.shields.io/badge/build-neon+cl-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/download/v24.11/arm_compute-v24.11-linux-aarch64-cpu-gpu-bin.tar.gz) |
6565

6666
<br>
6767

68-
Please refer to the following link for more pre-built binaries: [![](https://img.shields.io/badge/v24.09-bins-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/tag/v24.09)
68+
Please refer to the following link for more pre-built binaries: [![](https://img.shields.io/badge/v24.11-bins-yellowgreen)](https://github.com/ARM-software/ComputeLibrary/releases/tag/v24.11)
6969

7070
Pre-build binaries are generated with the following security / good coding practices related flags:
7171
> -Wall, -Wextra, -Wformat=2, -Winit-self, -Wstrict-overflow=2, -Wswitch-default, -Woverloaded-virtual, -Wformat-security, -Wctor-dtor-privacy, -Wsign-promo, -Weffc++, -pedantic, -fstack-protector-strong
@@ -107,13 +107,13 @@ Pre-build binaries are generated with the following security / good coding pract
107107

108108
## Experimental builds
109109

110-
**⚠ Important** Bazel and CMake builds are experimental CPU only builds, please see the [documentation](https://artificial-intelligence.sites.arm.com/computelibrary/v24.09/how_to_build.xhtml) for more details.
110+
**⚠ Important** Bazel and CMake builds are experimental CPU only builds, please see the [documentation](https://artificial-intelligence.sites.arm.com/computelibrary/v24.11/how_to_build.xhtml) for more details.
111111

112112
<br>
113113

114114
## How to contribute
115115

116-
Contributions to the Compute Library are more than welcome. If you are interested on contributing, please have a look at our [how to contribute guidelines](https://artificial-intelligence.sites.arm.com/computelibrary/v24.09/contribution_guidelines.xhtml).
116+
Contributions to the Compute Library are more than welcome. If you are interested on contributing, please have a look at our [how to contribute guidelines](https://artificial-intelligence.sites.arm.com/computelibrary/v24.11/contribution_guidelines.xhtml).
117117

118118
### Developer Certificate of Origin (DCO)
119119
Before the Compute Library accepts your contribution, you need to certify its origin and give us your permission. To manage this process we use the Developer Certificate of Origin (DCO) V1.1 (https://developercertificate.org/)

SConscript

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ import codecs
3333
import platform
3434
import SCons
3535

36-
VERSION = "v24.09"
37-
LIBRARY_VERSION_MAJOR = 42
36+
VERSION = "v24.11"
37+
LIBRARY_VERSION_MAJOR = 43
3838
LIBRARY_VERSION_MINOR = 0
3939
LIBRARY_VERSION_PATCH = 0
4040
SONAME_VERSION = str(LIBRARY_VERSION_MAJOR) + "." + str(LIBRARY_VERSION_MINOR) + "." + str(LIBRARY_VERSION_PATCH)
@@ -627,12 +627,8 @@ custom_operators = []
627627
custom_types = []
628628
custom_layouts = []
629629

630-
use_custom_ops = env['high_priority'] or env['build_config']
630+
use_custom_ops = env['build_config']
631631

632-
if env['high_priority']:
633-
custom_operators = filelist['high_priority']
634-
custom_types = ['all']
635-
custom_layouts = ['all']
636632

637633
if env['build_config']:
638634
custom_operators, custom_types, custom_layouts = read_build_config_json(env['build_config'])

SConstruct

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ vars.AddVariables(
116116
PathVariable("build_dir", "Specify sub-folder for the build", ".", PathVariable.PathAccept),
117117
PathVariable("install_dir", "Specify sub-folder for the install", "", PathVariable.PathAccept),
118118
BoolVariable("exceptions", "Enable/disable C++ exception support", True),
119-
BoolVariable("high_priority", "Generate a library containing only the high priority operators", False),
120119
PathVariable("linker_script", "Use an external linker script", "", PathVariable.PathAccept),
121120
PathVariable("external_tests_dir", """Add examples, benchmarks and tests to the tests suite from an external path. In order to use this option, the external tests directory must have the following structure:
122121
EXTERNAL_TESTS_DIR:
@@ -519,21 +518,11 @@ if not GetOption("help"):
519518
# Thus for backward compatibility, we include this flag only for NDK < r23
520519
env.Append(CXXFLAGS = ['-no-integrated-as'])
521520

522-
if env['high_priority'] and env['build_config']:
523-
print("The high priority library cannot be built in conjunction with a user-specified build configuration")
524-
Exit(1)
525-
526-
if not env['high_priority'] and not env['build_config']:
527-
env.Append(CPPDEFINES = ['ARM_COMPUTE_GRAPH_ENABLED'])
528-
529521
data_types = []
530522
data_layouts = []
531523

532524
# Set correct data types / layouts to build
533-
if env['high_priority']:
534-
data_types = ['all']
535-
data_layouts = ['all']
536-
elif env['build_config']:
525+
if env['build_config']:
537526
data_types, data_layouts = read_build_config_json(env['build_config'])
538527
else:
539528
data_types = env['data_type_support']
@@ -613,7 +602,9 @@ else:
613602
env.Append(CXXFLAGS = ['-O3'])
614603
else:
615604
# on windows we use clang-cl which does not support the option -O3
616-
env.Append(CXXFLAGS = ['-O2'])
605+
if not version_at_least(compiler_ver, '17.0.0'):
606+
# Disable optimizations in clang 17 or later because the compiler crashes with -O2
607+
env.Append(CXXFLAGS = ['-O2'])
617608

618609
if env['asserts']:
619610
env.Append(CPPDEFINES = ['ARM_COMPUTE_ASSERTS_ENABLED'])
@@ -653,7 +644,7 @@ Export('version_at_least')
653644

654645
SConscript('./SConscript', variant_dir=build_path, duplicate=0)
655646

656-
if env['examples'] and (env['build_config'] or env['high_priority']):
647+
if env['examples'] and env['build_config']:
657648
print("WARNING: Building examples for selected operators not supported. Use examples=0")
658649
Return()
659650

@@ -664,7 +655,7 @@ if env['examples'] and env['exceptions']:
664655
SConscript('./examples/SConscript', variant_dir='%s/examples' % build_path, duplicate=0)
665656

666657
if env['exceptions']:
667-
if env['build_config'] or env['high_priority']:
658+
if env['build_config']:
668659
print("WARNING: Building tests for selected operators not supported")
669660
Return()
670661
if env['os'] == 'bare_metal' and env['arch'] == 'armv7a':

arm_compute/core/CPP/CPPTypes.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
#include "arm_compute/core/Error.h"
2828

29+
#include <cstdint>
2930
#include <memory>
3031

3132
namespace arm_compute
@@ -180,7 +181,12 @@ class CPUInfo final
180181
*
181182
* @return Vector length if sme2 is enabled, otherwise returns 0.
182183
*/
183-
uint64_t get_sme2_vector_length() const;
184+
uint64_t get_sme2_vector_length_in_bytes() const;
185+
/** Return the vector length in bits for sme2
186+
*
187+
* @return Vector length if sme2 is enabled, otherwise returns 0.
188+
*/
189+
uint64_t get_sme2_vector_length_in_bits() const;
184190

185191
private:
186192
struct Impl;

arm_compute/core/QuantizationInfo.h

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,31 @@ struct UniformQuantizationInfo
6363
int32_t offset;
6464
};
6565

66+
/** Quantization info when assuming per layer quantization */
67+
struct UniformRequantizationInfo
68+
{
69+
/** Default constructor */
70+
UniformRequantizationInfo() : scale(0.f), offset(0.f)
71+
{
72+
}
73+
/** Constructor
74+
*
75+
* @param[in] scale Quantization scale
76+
* @param[in] offset Quantization offset
77+
*/
78+
UniformRequantizationInfo(float scale, float offset) : scale(scale), offset(offset)
79+
{
80+
}
81+
/** Checks if the scale and offset are both zero */
82+
bool empty() const
83+
{
84+
return (scale == 0) && (offset == 0);
85+
}
86+
87+
float scale;
88+
float offset;
89+
};
90+
6691
/** Quantization information */
6792
class QuantizationInfo
6893
{
@@ -232,6 +257,13 @@ struct Qasymm8QuantizationHelper
232257
return static_cast<QUANTIZED_TYPE>(arm_compute::utility::clamp<decltype(quantized), QUANTIZED_TYPE>(quantized));
233258
}
234259

260+
static inline QUANTIZED_TYPE quantize(float value, const UniformRequantizationInfo &qinfo)
261+
{
262+
ARM_COMPUTE_ERROR_ON(qinfo.scale == 0);
263+
const int quantized = support::cpp11::lround(value / qinfo.scale + qinfo.offset);
264+
return static_cast<QUANTIZED_TYPE>(arm_compute::utility::clamp<decltype(quantized), QUANTIZED_TYPE>(quantized));
265+
}
266+
235267
/** Quantize a value given a 8-bit asymmetric quantization scheme using a specific rounding policy
236268
*
237269
* @param[in] value Value to quantize
@@ -253,6 +285,21 @@ struct Qasymm8QuantizationHelper
253285
return static_cast<QUANTIZED_TYPE>(arm_compute::utility::clamp<decltype(quantized), QUANTIZED_TYPE>(quantized));
254286
}
255287

288+
static inline QUANTIZED_TYPE
289+
quantize(float value, const UniformRequantizationInfo &qinfo, RoundingPolicy rounding_policy)
290+
{
291+
if (rounding_policy == RoundingPolicy::TO_NEAREST_UP)
292+
{
293+
return quantize(value, qinfo);
294+
}
295+
296+
ARM_COMPUTE_ERROR_ON(qinfo.scale == 0);
297+
298+
// We round after adding the offset, because the offset is also float
299+
const int quantized = arm_compute::round(value / qinfo.scale + qinfo.offset, rounding_policy);
300+
return static_cast<QUANTIZED_TYPE>(arm_compute::utility::clamp<decltype(quantized), QUANTIZED_TYPE>(quantized));
301+
}
302+
256303
/** Quantize a value given a 8-bit asymmetric quantization scheme
257304
*
258305
* @param[in] value Value to quantize
@@ -588,7 +635,11 @@ inline float dequantize_s32(int32_t value, const QuantizationInfo &qinfo)
588635
return dequantize_s32(value, qinfo.uniform());
589636
}
590637

591-
/*
638+
/** Compute the requantization offset and scale
639+
*
640+
* @deprecated because reequantization using integer offsets creates rounding issues.
641+
* Please use @ref arm_compute::compute_requantization_scale_float_offset() instead.
642+
*
592643
* In case of requantization of a quantized input tensor to an output tensor with another quantization
593644
* instead of applying dequantization and then a quantization functions, we just compute new scale and
594645
* offset.
@@ -628,9 +679,32 @@ inline UniformQuantizationInfo compute_requantization_scale_offset(const Uniform
628679
// In order to minimize flooring we convert the offset to a float,
629680
// then compute the new offset in the float domain,
630681
// finally we convert it back as int32_t
631-
offset_to_apply -= static_cast<int32_t>(static_cast<float>(uqinfo_in.offset) * uqinfo_in.scale / uqinfo_out.scale);
682+
683+
#ifdef __aarch64__
684+
constexpr RoundingPolicy rounding_policy = RoundingPolicy::TO_NEAREST_EVEN;
685+
#else //__aarch64__
686+
constexpr RoundingPolicy rounding_policy = RoundingPolicy::TO_NEAREST_UP;
687+
#endif //__aarch64__
688+
689+
offset_to_apply -=
690+
arm_compute::round(static_cast<float>(uqinfo_in.offset) * uqinfo_in.scale / uqinfo_out.scale, rounding_policy);
632691
return UniformQuantizationInfo(scale_to_apply, offset_to_apply);
633692
}
634693

694+
/** Similar to @ref arm_compute::compute_requantization_scale_offset()
695+
* but returning offset as float instead of integer
696+
*/
697+
inline UniformRequantizationInfo compute_requantization_scale_float_offset(const UniformQuantizationInfo &uqinfo_in,
698+
const UniformQuantizationInfo &uqinfo_out)
699+
{
700+
float scale_to_apply = uqinfo_out.scale;
701+
float offset_to_apply = static_cast<float>(uqinfo_out.offset);
702+
703+
scale_to_apply /= uqinfo_in.scale;
704+
offset_to_apply -= static_cast<float>(uqinfo_in.offset) * uqinfo_in.scale / uqinfo_out.scale;
705+
706+
return UniformRequantizationInfo(scale_to_apply, offset_to_apply);
707+
}
708+
635709
} // namespace arm_compute
636710
#endif // ACL_ARM_COMPUTE_CORE_QUANTIZATIONINFO_H

arm_compute/core/TensorInfo.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,9 @@ class TensorInfo final : public ITensorInfo
327327

328328
private:
329329
/** Calculates strides, offset and total size resulting from the specified padding around the XY plane.
330+
*
331+
* @note When interpreting the required_strides in the return value, only the values up to the corresponding dimension in the tensor is
332+
* valid. For example, 1D tensor should only refer to 1D in required_strides, 2D tensor up to 2D in required_strides, and so on.
330333
*
331334
* @param[in] padding Padding around the XY plane in elements.
332335
*/

0 commit comments

Comments
 (0)