ONE - On-device Neural Engine
|
Go to the source code of this file.
Data Structures | |
struct | Vector |
struct | Image |
struct | Tensor3D |
struct | Tensor4D |
Macros | ||||||||||
#define | GPU_ARCH_MIDGARD 0x100 | |||||||||
#define | GPU_ARCH_BIFROST 0x200 | |||||||||
#define | CONCAT(a, b) a##b | |||||||||
#define | EXPAND(x) x | |||||||||
#define | CLAMP(x, min_val, max_val) min(max(x, min_val), max_val) | |||||||||
#define | VLOAD_STR(size) vload##size | |||||||||
#define | VLOAD(size) VLOAD_STR(size) | |||||||||
#define | VSTORE_STR(size) vstore##size | |||||||||
#define | VSTORE(size) VSTORE_STR(size) | |||||||||
#define | float1 float | |||||||||
#define | half1 half | |||||||||
#define | char1 char | |||||||||
#define | uchar1 uchar | |||||||||
#define | short1 short | |||||||||
#define | ushort1 ushort | |||||||||
#define | int1 int | |||||||||
#define | uint1 uint | |||||||||
#define | long1 long | |||||||||
#define | ulong1 ulong | |||||||||
#define | double1 double | |||||||||
#define | vload1(OFFSET, PTR) *(OFFSET + PTR) | |||||||||
#define | vstore1(DATA, OFFSET, PTR) *(OFFSET + PTR) = DATA | |||||||||
#define | convert_float_sat convert_float | |||||||||
#define | convert_float1_sat convert_float | |||||||||
#define | convert_float2_sat convert_float2 | |||||||||
#define | convert_float3_sat convert_float3 | |||||||||
#define | convert_float4_sat convert_float4 | |||||||||
#define | convert_float8_sat convert_float8 | |||||||||
#define | convert_float16_sat convert_float16 | |||||||||
#define | convert_half_sat convert_float | |||||||||
#define | convert_half1_sat convert_half | |||||||||
#define | convert_half2_sat convert_half2 | |||||||||
#define | convert_half3_sat convert_half3 | |||||||||
#define | convert_half4_sat convert_half4 | |||||||||
#define | convert_half8_sat convert_half8 | |||||||||
#define | convert_half16_sat convert_half16 | |||||||||
#define | convert_float1 convert_float | |||||||||
#define | convert_half1 convert_half | |||||||||
#define | convert_char1 convert_char | |||||||||
#define | convert_uchar1 convert_uchar | |||||||||
#define | convert_short1 convert_short | |||||||||
#define | convert_ushort1 convert_ushort | |||||||||
#define | convert_int1 convert_int | |||||||||
#define | convert_uint1 convert_uint | |||||||||
#define | convert_long1 convert_long | |||||||||
#define | convert_ulong1 convert_ulong | |||||||||
#define | convert_double1 convert_double | |||||||||
#define | convert_char1_sat convert_char_sat | |||||||||
#define | convert_uchar1_sat convert_uchar_sat | |||||||||
#define | convert_short1_sat convert_short_sat | |||||||||
#define | convert_ushort1_sat convert_ushort_sat | |||||||||
#define | convert_int1_sat convert_int_sat | |||||||||
#define | convert_uint1_sat convert_uint_sat | |||||||||
#define | convert_long1_sat convert_long_sat | |||||||||
#define | convert_ulong1_sat convert_ulong_sat | |||||||||
#define | convert_double1_sat convert_double_sat | |||||||||
#define | VEC_DATA_TYPE_STR(type, size) type##size | |||||||||
#define | VEC_DATA_TYPE(type, size) VEC_DATA_TYPE_STR(type, size) | |||||||||
#define | CL_VEC_DATA_TYPE_STR(type, size) type##size | |||||||||
#define | CL_VEC_DATA_TYPE(type, size) CL_VEC_DATA_TYPE_STR(type, size) | |||||||||
#define | CONVERT_STR(x, type) (convert_##type((x))) | |||||||||
#define | CONVERT(x, type) CONVERT_STR(x, type) | |||||||||
#define | CONVERT_SAT_STR(x, type) (convert_##type##_sat((x))) | |||||||||
#define | CONVERT_SAT(x, type) CONVERT_SAT_STR(x, type) | |||||||||
#define | CONVERT_SAT_ROUND_STR(x, type, round) (convert_##type##_sat_##round((x))) | |||||||||
#define | CONVERT_SAT_ROUND(x, type, round) CONVERT_SAT_ROUND_STR(x, type, round) | |||||||||
#define | VECTOR_DECLARATION(name) | |||||||||
#define | IMAGE_DECLARATION(name) | |||||||||
#define | TENSOR3D_DECLARATION(name) | |||||||||
#define | TENSOR4D_DECLARATION(name) | |||||||||
#define | CONVERT_TO_VECTOR_STRUCT(name) | |||||||||
#define | CONVERT_TO_VECTOR_STRUCT_NO_STEP(name) update_vector_workitem_ptr(name##_ptr, name##_offset_first_element_in_bytes, name##_stride_x, 0) | |||||||||
#define | CONVERT_TO_IMAGE_STRUCT(name) | |||||||||
#define | CONVERT_TO_IMAGE_STRUCT_NO_STEP(name) | |||||||||
#define | CONVERT_TENSOR3D_TO_IMAGE_STRUCT(name) | |||||||||
#define | CONVERT_TENSOR3D_TO_IMAGE_STRUCT_NO_STEP(name) | |||||||||
#define | CONVERT_TENSOR3D_TO_IMAGE_STRUCT(name) | |||||||||
#define | CONVERT_TO_TENSOR3D_STRUCT(name) | |||||||||
#define | CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name) | |||||||||
#define | CONVERT_TO_TENSOR4D_STRUCT(name, mod_size) | |||||||||
#define | CONVERT_TO_TENSOR4D_STRUCT_NO_STEP(name, mod_size) | |||||||||
REVn | ||||||||||
REVn reverses the given vector whose size is n.
| ||||||||||
#define | REV1(x) ((x)) | |||||||||
#define | REV2(x) ((x).s10) | |||||||||
#define | REV3(x) ((x).s210) | |||||||||
#define | REV4(x) ((x).s3210) | |||||||||
#define | REV8(x) ((x).s76543210) | |||||||||
#define | REV16(x) ((x).sFEDCBA9876543210) | |||||||||
REVERSE | ||||||||||
Reverse the given vector.
| ||||||||||
#define | REVERSE_STR(x, s) REV##s((x)) | |||||||||
#define | REVERSE(x, s) REVERSE_STR(x, s) | |||||||||
ROTs_n | ||||||||||
Circular-right-shift (rotate-right) the vector of size s by the amount of n.
| ||||||||||
#define | ROT1_0(x) ((x)) | |||||||||
#define | ROT2_0(x) ((x)) | |||||||||
#define | ROT2_1(x) ((x).s10) | |||||||||
#define | ROT3_0(x) ((x)) | |||||||||
#define | ROT3_1(x) ((x).s201) | |||||||||
#define | ROT3_2(x) ((x).s120) | |||||||||
#define | ROT4_0(x) ((x)) | |||||||||
#define | ROT4_1(x) ((x).s3012) | |||||||||
#define | ROT4_2(x) ((x).s2301) | |||||||||
#define | ROT4_3(x) ((x).s1230) | |||||||||
#define | ROT8_0(x) ((x)) | |||||||||
#define | ROT8_1(x) ((x).s70123456) | |||||||||
#define | ROT8_2(x) ((x).s67012345) | |||||||||
#define | ROT8_3(x) ((x).s56701234) | |||||||||
#define | ROT8_4(x) ((x).s45670123) | |||||||||
#define | ROT8_5(x) ((x).s34567012) | |||||||||
#define | ROT8_6(x) ((x).s23456701) | |||||||||
#define | ROT8_7(x) ((x).s12345670) | |||||||||
#define | ROT16_0(x) ((x)) | |||||||||
#define | ROT16_1(x) ((x).sF0123456789ABCDE) | |||||||||
#define | ROT16_2(x) ((x).sEF0123456789ABCD) | |||||||||
#define | ROT16_3(x) ((x).sDEF0123456789ABC) | |||||||||
#define | ROT16_4(x) ((x).sCDEF0123456789AB) | |||||||||
#define | ROT16_5(x) ((x).sBCDEF0123456789A) | |||||||||
#define | ROT16_6(x) ((x).sABCDEF0123456789) | |||||||||
#define | ROT16_7(x) ((x).s9ABCDEF012345678) | |||||||||
#define | ROT16_8(x) ((x).s89ABCDEF01234567) | |||||||||
#define | ROT16_9(x) ((x).s789ABCDEF0123456) | |||||||||
#define | ROT16_10(x) ((x).s6789ABCDEF012345) | |||||||||
#define | ROT16_11(x) ((x).s56789ABCDEF01234) | |||||||||
#define | ROT16_12(x) ((x).s456789ABCDEF0123) | |||||||||
#define | ROT16_13(x) ((x).s3456789ABCDEF012) | |||||||||
#define | ROT16_14(x) ((x).s23456789ABCDEF01) | |||||||||
#define | ROT16_15(x) ((x).s123456789ABCDEF0) | |||||||||
ROTATE | ||||||||||
Circular-right-shift (rotate-right) the given vector by the given amount.
| ||||||||||
#define | ROTATE_STR(x, s, n) ROT##s##_##n(x) | |||||||||
#define | ROTATE(x, s, n) ROTATE_STR(x, s, n) | |||||||||
V_OFFSn | ||||||||||
Creates a vector of size n filled with offset values corresponding to the location of each element.
| ||||||||||
#define | V_OFFS1(dt) (dt)(0) | |||||||||
#define | V_OFFS2(dt) (dt)(0, 1) | |||||||||
#define | V_OFFS3(dt) (dt)(0, 1, 3) | |||||||||
#define | V_OFFS4(dt) (dt)(0, 1, 2, 3) | |||||||||
#define | V_OFFS8(dt) (dt)(0, 1, 2, 3, 4, 5, 6, 7) | |||||||||
#define | V_OFFS16(dt) (dt)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) | |||||||||
VEC_OFFS | ||||||||||
Create a vector filled with offset values corresponding to the location of each element.
| ||||||||||
#define | VEC_OFFS_STR(dt, s) V_OFFS##s(dt) | |||||||||
#define | VEC_OFFS(dt, s) VEC_OFFS_STR(dt, s) | |||||||||
Typedefs | |
typedef struct Vector | Vector |
typedef struct Image | Image |
typedef struct Tensor3D | Tensor3D |
typedef struct Tensor4D | Tensor4D |
Functions | |
Vector | update_vector_workitem_ptr (__global uchar *ptr, uint offset_first_element_in_bytes, uint stride_x, uint step_x) |
Image | update_image_workitem_ptr (__global uchar *ptr, uint offset_first_element_in_bytes, uint stride_x, uint step_x, uint stride_y, uint step_y) |
Image | update_image_from_tensor3D_workitem_ptr (__global uchar *ptr, uint offset_first_element_in_bytes, uint stride_x, uint step_x, uint stride_y, uint step_y, uint stride_z, uint step_z) |
Tensor3D | update_tensor3D_workitem_ptr (__global uchar *ptr, uint offset_first_element_in_bytes, uint stride_x, uint step_x, uint stride_y, uint step_y, uint stride_z, uint step_z) |
Tensor4D | update_tensor4D_workitem_ptr (__global uchar *ptr, uint offset_first_element_in_bytes, uint stride_x, uint step_x, uint stride_y, uint step_y, uint stride_z, uint step_z, uint stride_w, uint step_w, uint mod_size) |
__global const uchar * | vector_offset (const Vector *vec, int x) |
__global uchar * | offset (const Image *img, int x, int y) |
__global const uchar * | tensor3D_offset (const Tensor3D *tensor, int x, int y, int z) |
__global const uchar * | tensor4D_offset (const Tensor4D *tensor, int x, int y, int z, int w) |
#define CL_VEC_DATA_TYPE | ( | type, | |
size | |||
) | CL_VEC_DATA_TYPE_STR(type, size) |
#define CLAMP | ( | x, | |
min_val, | |||
max_val | |||
) | min(max(x, min_val), max_val) |
#define CONCAT | ( | a, | |
b | |||
) | a##b |
#define CONVERT | ( | x, | |
type | |||
) | CONVERT_STR(x, type) |
#define CONVERT_SAT | ( | x, | |
type | |||
) | CONVERT_SAT_STR(x, type) |
#define CONVERT_SAT_ROUND | ( | x, | |
type, | |||
round | |||
) | CONVERT_SAT_ROUND_STR(x, type, round) |
#define CONVERT_SAT_ROUND_STR | ( | x, | |
type, | |||
round | |||
) | (convert_##type##_sat_##round((x))) |
#define CONVERT_SAT_STR | ( | x, | |
type | |||
) | (convert_##type##_sat((x))) |
#define CONVERT_TENSOR3D_TO_IMAGE_STRUCT | ( | name | ) |
Definition at line 322 of file helpers.h.
#define CONVERT_TENSOR3D_TO_IMAGE_STRUCT | ( | name | ) |
#define CONVERT_TENSOR3D_TO_IMAGE_STRUCT_NO_STEP | ( | name | ) |
#define CONVERT_TO_IMAGE_STRUCT | ( | name | ) |
#define CONVERT_TO_IMAGE_STRUCT_NO_STEP | ( | name | ) |
#define CONVERT_TO_TENSOR3D_STRUCT | ( | name | ) |
#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP | ( | name | ) |
#define CONVERT_TO_TENSOR4D_STRUCT | ( | name, | |
mod_size | |||
) |
#define CONVERT_TO_TENSOR4D_STRUCT_NO_STEP | ( | name, | |
mod_size | |||
) |
#define CONVERT_TO_VECTOR_STRUCT | ( | name | ) |
#define CONVERT_TO_VECTOR_STRUCT_NO_STEP | ( | name | ) | update_vector_workitem_ptr(name##_ptr, name##_offset_first_element_in_bytes, name##_stride_x, 0) |
#define EXPAND | ( | x | ) | x |
#define IMAGE_DECLARATION | ( | name | ) |
#define REVERSE | ( | x, | |
s | |||
) | REVERSE_STR(x, s) |
#define ROTATE | ( | x, | |
s, | |||
n | |||
) | ROTATE_STR(x, s, n) |
#define TENSOR3D_DECLARATION | ( | name | ) |
#define TENSOR4D_DECLARATION | ( | name | ) |
#define V_OFFS16 | ( | dt | ) | (dt)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) |
#define VEC_DATA_TYPE | ( | type, | |
size | |||
) | VEC_DATA_TYPE_STR(type, size) |
#define VEC_OFFS | ( | dt, | |
s | |||
) | VEC_OFFS_STR(dt, s) |
#define VECTOR_DECLARATION | ( | name | ) |
#define VSTORE | ( | size | ) | VSTORE_STR(size) |
#define vstore1 | ( | DATA, | |
OFFSET, | |||
PTR | |||
) | *(OFFSET + PTR) = DATA |
|
inline |
Get the pointer position of a Image
[in] | img | Pointer to the starting position of the buffer |
[in] | x | Relative X position |
[in] | y | Relative Y position |
Definition at line 540 of file helpers.h.
References Image::ptr, Image::stride_x, and Image::stride_y.
Referenced by luci_interpreter::StaticMemoryManager::allocate_memory(), ANeuralNetworksExecution_setInputFromMemory(), ANeuralNetworksExecution_setOutputFromMemory(), ANeuralNetworksMemory_createFromFd(), ANeuralNetworksModel_setOperandValueFromMemory(), onert::backend::acl_common::asQuantizationInfo(), Tensor::at(), coco::FeatureLayouts::BCHW::at(), coco::FeatureLayouts::BHWC::at(), coco::FeatureLayouts::BC::at(), mir::Tensor< T >::atOffset(), mir::Tensor< T >::atOffset(), mir::TensorVariant::atOffset(), onert::backend::IPortableTensor::calcOffset(), luci_interpreter::kernels::computePaddingWithOffset(), concatenationPrepare(), onert_micro::train::pal::Conv2DBiasGrad(), onert::backend::cpu::ops::DepthwiseConvolutionLayer::convQ8iHybridPerChannel(), flatbuffers::vector_downward::data_at(), dequantize_qasymm8(), dequantize_qasymm8_signed(), luci_interpreter::kernels::testing::dequantizeTensorData(), enco::CppCode::dump(), flexbuffers::FLATBUFFERS_FINAL_CLASS::Value::ElemWidth(), onert_micro::core::OMTrainingRuntimeModule::evaluateMetric(), onert_micro::core::train::OMTrainingHandler::evaluateMetric(), luci_interpreter::kernels::MirrorPad::execute(), luci_interpreter::execute_kernel_CircleMirrorPad(), luci_interpreter::execute_kernel_CircleSlice(), luci::exportNodes(), luci::CircleReader::file_data(), tflite2circle::CircleModel::finalize(), nnfw::cker::FullyConnectedHybrid(), souschef::ExplicitDataChef< std::string >::generate(), record_minmax::getMovingAverage(), mir::TensorVariant::getOffset(), onert::exec::feature::nchw::Reader< T >::getRef(), onert::exec::feature::nhwc::Reader< T >::getRef(), onert_micro::train::pal::GRUWeightGrads(), onert_micro::core::train::OMTrainingHandler::handleError(), flexbuffers::Indirect(), flexbuffers::Indirect(), onert::loader::BaseLoader< LoaderDomain >::loadOperand(), luci_interpreter::kernels::testing::makeInputTensor(), nnfw::cker::train::MaxPool2D(), nnfw::cker::train::MSEGrad(), record_minmax::DirectoryIterator::next(), nnfw::misc::vector::Object< T >::Object(), nnfw::cker::FusedBatchNorm::operator()(), Eigen::internal::gemm_pack_rhs< Scalar, Index, TensorContractionSubMapper< Scalar, Index, Rhs, TensorEvaluator< const TensorReshapingOp< NewDimension, const TensorImagePatchOp< Rows, Cols, ArgType > >, Device >, nocontract_t, contract_t, packet_size, inner_dim_contiguous, inner_dim_reordered, Alignment >, nr, ColMajor, false, false >::operator()(), Eigen::internal::gemm_pack_rhs< Scalar, Index, TensorContractionSubMapper< Scalar, Index, Rhs, TensorEvaluator< const TensorReshapingOp< NewDimension, const TensorImagePatchOp< Rows, Cols, ArgType > >, Device >, nocontract_t, contract_t, 2, inner_dim_contiguous, inner_dim_reordered, Alignment >, nr, ColMajor, false, false >::operator()(), Eigen::internal::gemm_pack_rhs< Scalar, Index, TensorContractionSubMapper< Scalar, Index, Rhs, TensorEvaluator< const TensorReshapingOp< NewDimension, const TensorImagePatchOp< Rows, Cols, ArgType > >, Device >, nocontract_t, contract_t, 1, inner_dim_contiguous, inner_dim_reordered, Alignment >, nr, ColMajor, false, false >::operator()(), flatbuffers::VectorIterator< T, IT >::operator+(), flatbuffers::VectorIterator< T, IT >::operator+=(), flatbuffers::VectorIterator< T, IT >::operator-(), flatbuffers::VectorIterator< T, IT >::operator-=(), nnfw::cker::PortableAsymmetricQuantizeFloats(), quantize_qasymm8(), tflite::reference_ops::RankOneSelect(), nnfw::cker::RankOneSelect(), nnfw::cker::ReducedOutputOffset(), onert::backend::train::FirstFitPlanner< Index >::release(), onert::backend::basic::FirstFitPlanner::release(), flatbuffers::vector_downward::release_raw(), flatbuffers::FlatBufferBuilder::ReleaseRaw(), flatbuffers::grpc::MessageBuilder::ReleaseRaw(), coco::Arg::reorder(), nnfw::cker::RoPE(), nnfw::cker::functor::FillPhiloxRandomTask< Distribution, true >::Run(), nnfw::cker::functor::FillPhiloxRandomTask< Distribution, false >::Run(), MappedMemory::set(), luci_interpreter::Tensor::set_offset(), ModelArgumentInfo::setFromMemory(), ExecutionBuilder::setInputFromMemory(), ModelBuilder::setOperandValueFromMemory(), ExecutionBuilder::setOutputFromMemory(), and onert_micro::core::OMTrainingRuntimeModule::trainSingleStep().
|
inline |
Get the pointer position of a Tensor3D
[in] | tensor | Pointer to the starting position of the buffer |
[in] | x | Relative X position |
[in] | y | Relative Y position |
[in] | z | Relative Z position |
|
inline |
Get the pointer position of a Tensor4D
[in] | tensor | Pointer to the starting position of the buffer |
[in] | x | Relative X position |
[in] | y | Relative Y position |
[in] | z | Relative Z position |
[in] | w | Relative W position |
|
inline |
Wrap 3D tensor information into an image structure, and make the pointer point at this workitem's data.
[in] | ptr | Pointer to the starting postion of the buffer |
[in] | offset_first_element_in_bytes | The offset of the first element in the source image |
[in] | stride_x | Stride of the image in X dimension (in bytes) |
[in] | step_x | stride_x * number of elements along X processed per workitem(in bytes) |
[in] | stride_y | Stride of the image in Y dimension (in bytes) |
[in] | step_y | stride_y * number of elements along Y processed per workitem(in bytes) |
[in] | stride_z | Stride of the image in Z dimension (in bytes) |
[in] | step_z | stride_z * number of elements along Z processed per workitem(in bytes) |
Definition at line 460 of file helpers.h.
References Image::offset_first_element_in_bytes, and Image::ptr.
|
inline |
Wrap image information into an Image structure, and make the pointer point at this workitem's data.
[in] | ptr | Pointer to the starting postion of the buffer |
[in] | offset_first_element_in_bytes | The offset of the first element in the source image |
[in] | stride_x | Stride of the image in X dimension (in bytes) |
[in] | step_x | stride_x * number of elements along X processed per workitem(in bytes) |
[in] | stride_y | Stride of the image in Y dimension (in bytes) |
[in] | step_y | stride_y * number of elements along Y processed per workitem(in bytes) |
Definition at line 431 of file helpers.h.
References Image::offset_first_element_in_bytes, and Image::ptr.
|
inline |
Wrap 3D tensor information into an tensor structure, and make the pointer point at this workitem's data.
[in] | ptr | Pointer to the starting postion of the buffer |
[in] | offset_first_element_in_bytes | The offset of the first element in the source image |
[in] | stride_x | Stride of the image in X dimension (in bytes) |
[in] | step_x | stride_x * number of elements along X processed per workitem(in bytes) |
[in] | stride_y | Stride of the image in Y dimension (in bytes) |
[in] | step_y | stride_y * number of elements along Y processed per workitem(in bytes) |
[in] | stride_z | Stride of the image in Z dimension (in bytes) |
[in] | step_z | stride_z * number of elements along Z processed per workitem(in bytes) |
Definition at line 491 of file helpers.h.
|
inline |
Definition at line 506 of file helpers.h.
|
inline |
Wrap vector information into an Vector structure, and make the pointer point at this workitem's data.
[in] | ptr | Pointer to the starting postion of the buffer |
[in] | offset_first_element_in_bytes | The offset of the first element in the source vector |
[in] | stride_x | Stride of the vector in X dimension (in bytes) |
[in] | step_x | stride_x * number of elements along X processed per workitem(in bytes) |
Definition at line 405 of file helpers.h.
References Vector::offset_first_element_in_bytes, and Vector::ptr.
|
inline |
Get the pointer position of a Vector
[in] | vec | Pointer to the starting position of the buffer |
[in] | x | Relative X position |
Definition at line 529 of file helpers.h.
References Vector::ptr, and Vector::stride_x.