MU Library
vector.hpp
Go to the documentation of this file.
1 // SPDX-License-Identifier: Apache-2.0
2 // Copyright 2024 XCENA Inc.
3 
4 #pragma once
5 #include <cstdint>
6 
8 
9 namespace half_float
10 {
11 class half;
12 } // namespace half_float
13 
14 namespace mu
15 {
16 namespace vector
17 {
18 
30 mu::vector::VdmaError addElementwise(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
31 
43 mu::vector::VdmaError addElementwise(const half_float::half* lhs, const half_float::half* rhs, half_float::half* res, const uint64_t vectorDim);
44 
56 mu::vector::VdmaError subElementwise(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
57 
69 mu::vector::VdmaError subElementwise(const half_float::half* lhs, const half_float::half* rhs, half_float::half* res, const uint64_t vectorDim);
70 
82 mu::vector::VdmaError mulElementwise(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
83 
95 mu::vector::VdmaError mulElementwise(const half_float::half* lhs, const half_float::half* rhs, half_float::half* res, const uint64_t vectorDim);
96 
107 mu::vector::VdmaError squareElementwise(const float* src, float* res, const uint64_t vectorDim);
108 
119 mu::vector::VdmaError squareElementwise(const half_float::half* src, half_float::half* res, const uint64_t vectorDim);
120 
132 mu::vector::VdmaError divElementwise(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
133 
145 mu::vector::VdmaError divElementwise(const half_float::half* lhs, const half_float::half* rhs, half_float::half* res, const uint64_t vectorDim);
146 
158 mu::vector::VdmaError xorElementwise(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
159 
171 mu::vector::VdmaError xorElementwise(const half_float::half* lhs, const half_float::half* rhs, half_float::half* res, const uint64_t vectorDim);
172 
184 mu::vector::VdmaError addVectorToScalar(const float& scalar, const float* vector, float* res, const uint64_t vectorDim);
185 
197 mu::vector::VdmaError addVectorToScalar(const half_float::half& scalar, const half_float::half* vector, half_float::half* res, const uint64_t vectorDim);
198 
210 mu::vector::VdmaError subVectorToScalar(const float& scalar, const float* vector, float* res, const uint64_t vectorDim);
211 
223 mu::vector::VdmaError subVectorToScalar(const half_float::half& scalar, const half_float::half* vector, half_float::half* res, const uint64_t vectorDim);
224 
236 mu::vector::VdmaError mulVectorToScalar(const float& scalar, const float* vector, float* res, const uint64_t vectorDim);
237 
249 mu::vector::VdmaError mulVectorToScalar(const half_float::half& scalar, const half_float::half* vector, half_float::half* res, const uint64_t vectorDim);
250 
262 mu::vector::VdmaError divVectorToScalar(const float& scalar, const float* vector, float* res, const uint64_t vectorDim);
263 
275 mu::vector::VdmaError divVectorToScalar(const half_float::half& scalar, const half_float::half* vector, half_float::half* res, const uint64_t vectorDim);
276 
288 mu::vector::VdmaError xorVectorToScalar(const float& scalar, const float* vector, float* res, const uint64_t vectorDim);
289 
301 mu::vector::VdmaError xorVectorToScalar(const half_float::half& scalar, const half_float::half* vector, half_float::half* res, const uint64_t vectorDim);
302 
314 mu::vector::VdmaError addElementwiseReduce(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
315 
327 mu::vector::VdmaError addElementwiseReduce(const half_float::half* lhs, const half_float::half* rhs, float* res, const uint64_t vectorDim);
328 
340 mu::vector::VdmaError subElementwiseReduce(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
341 
353 mu::vector::VdmaError subElementwiseReduce(const half_float::half* lhs, const half_float::half* rhs, float* res, const uint64_t vectorDim);
354 
366 mu::vector::VdmaError mulElementwiseReduce(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
367 
379 mu::vector::VdmaError mulElementwiseReduce(const half_float::half* lhs, const half_float::half* rhs, float* res, const uint64_t vectorDim);
380 
392 mu::vector::VdmaError divElementwiseReduce(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
393 
405 mu::vector::VdmaError divElementwiseReduce(const half_float::half* lhs, const half_float::half* rhs, float* res, const uint64_t vectorDim);
406 
418 mu::vector::VdmaError dotProduct(const float* lhs, const float* rhs, float* res, const uint64_t vectorDim);
419 
431 mu::vector::VdmaError dotProduct(const half_float::half* lhs, const half_float::half* rhs, float* res, const uint64_t vectorDim);
432 
444 mu::vector::VdmaError equals(const float* lhs, const float* rhs, bool* res, const uint64_t vectorDim);
445 
457 mu::vector::VdmaError equalsWithScalar(const float* vector, const float& scalar, bool* res, const uint64_t vectorDim);
458 
469 mu::vector::VdmaError isAllZero(const float* vector, bool* res, const uint64_t vectorDim);
470 
481 mu::vector::VdmaError crc32(const void* src, uint32_t& res, const uint64_t byteSize);
482 
493 mu::vector::VdmaError crc32c(const void* src, uint32_t& res, const uint64_t byteSize);
494 
495 } // namespace vector
496 } // namespace mu
The VdmaError class represents an error that can occur during vector operations.
mu::vector::VdmaError addVectorToScalar(const float &scalar, const float *vector, float *res, const uint64_t vectorDim)
Adds a single scalar value to a float type vector.
mu::vector::VdmaError mulVectorToScalar(const float &scalar, const float *vector, float *res, const uint64_t vectorDim)
Multiplies a scalar to a float type vector.
mu::vector::VdmaError equals(const float *lhs, const float *rhs, bool *res, const uint64_t vectorDim)
Compares two float type vectors elementwise.
mu::vector::VdmaError mulElementwise(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Multiplies two float type vectors elementwise.
mu::vector::VdmaError subElementwise(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Subtracts two float type vectors elementwise.
mu::vector::VdmaError divVectorToScalar(const float &scalar, const float *vector, float *res, const uint64_t vectorDim)
Divides a float type vector by a scalar.
mu::vector::VdmaError addElementwise(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Adds two float type vectors elementwise.
mu::vector::VdmaError divElementwise(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Divides float type lhs vector by rhs vector elementwise.
mu::vector::VdmaError dotProduct(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Performs dot product on two float type vectors. (Alias function of mulElementwiseReduce)
mu::vector::VdmaError squareElementwise(const float *src, float *res, const uint64_t vectorDim)
Squares a float type vector elementwise.
mu::vector::VdmaError mulElementwiseReduce(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Multiplies two float type vectors elementwise and sums up. (same as dotProduct)
mu::vector::VdmaError subElementwiseReduce(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Subtracts two float type vectors elementwise and sums up.
mu::vector::VdmaError crc32(const void *src, uint32_t &res, const uint64_t byteSize)
Gets the CRC32 checksum of a buffer.
mu::vector::VdmaError xorVectorToScalar(const float &scalar, const float *vector, float *res, const uint64_t vectorDim)
Performs XOR a scalar to a float type vector.
mu::vector::VdmaError crc32c(const void *src, uint32_t &res, const uint64_t byteSize)
Gets the CRC32C checksum of a buffer.
mu::vector::VdmaError equalsWithScalar(const float *vector, const float &scalar, bool *res, const uint64_t vectorDim)
Compares float type vector with a scalar elementwise.
mu::vector::VdmaError isAllZero(const float *vector, bool *res, const uint64_t vectorDim)
Check if all elements in a float type vector are zero.
mu::vector::VdmaError xorElementwise(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Performs bitwise XOR on the two bytestreams which have size of dimension multiplied by float size.
mu::vector::VdmaError addElementwiseReduce(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Adds two float type vectors elementwise and sums up.
mu::vector::VdmaError subVectorToScalar(const float &scalar, const float *vector, float *res, const uint64_t vectorDim)
Subtracts a scalar from a float type vector.
mu::vector::VdmaError divElementwiseReduce(const float *lhs, const float *rhs, float *res, const uint64_t vectorDim)
Divides float type lhs vector by rhs vector elementwise and sums up.
Definition: assert.hpp:9