SetTensorA
Function Description
Sets the left matrix A for matrix multiplication.
Prototype
1 | __aicore__ inline void SetTensorA(const GlobalTensor<SrcAT>& gm, bool isTransposeA = false) |
1 | __aicore__ inline void SetTensorA(const LocalTensor<SrcAT>& leftMatrix, bool isTransposeA = false) |
1 | __aicore__ inline void SetTensorA(SrcAT aScalar) |
Parameters
Parameter |
Input/Output |
Description |
|---|---|---|
gm |
Input |
Initial address of matrix A in the Global Memory. |
leftMatrix |
Input |
Initial address of matrix A in the TSCM or VECOUT. If the initial address in the TSCM is set, the matrix can be fully loaded by default. In this case, the Iterate API does not need to transfer data from GM to A1/B1. |
aScalar |
Input |
Value set in matrix A. Scalar data can be passed. The passed scalar data is expanded into a tensor with the shape of [1, K] to participate in matrix multiplication. The tensor values are all scalar values. For example, a developer can implement a reduce sum operation on matrix B in the K direction by setting aScalar to 1. |
isTransposeA |
Input |
Whether matrix A should be transposed. Note: If MatmulType ISTRANS of matrix A is set to true, this parameter can be set to either true or false at runtime, allowing for alternating use of transposed and non-transposed matrix A. If MatmulType ISTRANS of matrix A is set to false, this parameter can only be set to false. If it is forcibly set to true, the precision will be abnormal. |
Returns
None
Availability
Precautions
Ensure that the size of the input TensorA address space is greater than or equal to singleM x singleK.
Example
1 2 3 4 5 | REGIST_MATMUL_OBJ(&pipe, GetSysWorkSpacePtr(), mm, &tiling); mm.SetTensorA(gm_a); // Set the left matrix A. mm.SetTensorB(gm_b); mm.SetBias(gm_bias); mm.IterateAll(gm_c); |