GetSinTmpBufferFactorSize

Function Usage

Obtains maxLiveNodeCount and extraBuf to compute the maximum number of elements that can be computed by an operator at a time when the size of space is fixed. maxLiveNodeCount indicates how many times the temporary space is compared to the data volume of a single computation. extraBuf indicates the size of the extra temporary space.

Example:

  • The Sin API needs to be called for operator implementation. Developers need to reserve space of the currBuff size and use the GetSinTmpBufferFactorSize API to obtain the output values of maxLiveNodeCount and extraBuf, to calculate the maximum number of elements in a single computation of an operator.

    currentShapeSize = (currBuff - extraBuf) / maxLiveNodeCount / typeSize

  • To implement the operator, two kernel APIs KernelIntf1 and KernelIntf2 need to be called. Two output values (maxLiveNodeCount and extraBuf) of two GetXxxTmpBufferFactorSize API functions (Xxx indicates the two high-level APIs to be called) and the existing temporary space are used to calculate the maximum number of elements in a single computation (currentShapeSize).

    currentShapeSize1 = (currBuff - extraBuf1) / maxLiveNodeCount1 / typeSize

    currentShapeSize2 = (currBuff - extraBuf2) / maxLiveNodeCount2 / typeSize

    currentShapeSize = min(currentShapeSize1, currentShapeSize2)

Note that currBuff indicates the available space for API computation. The space used for purposes such as input and output must be excluded. In addition, the output value of maxLiveNodeCount might be 0. Ensure that the value is not 0 to avoid the division-by-zero error.

Prototype

1
void GetSinTmpBufferFactorSize(const uint32_t typeSize, uint32_t& maxLiveNodeCount, uint32_t& extraBuf)
1
void GetSinTmpBufferFactorSize(const SinConfig& config, const uint32_t typeSize, uint32_t& maxLiveNodeCount, uint32_t& extraBuf)

Parameters

Table 1 Parameter list

Parameter

Input/Output

Description

config

Input

Only the Atlas 350 Accelerator Card supports this option.

Sin API configuration. The value of this parameter must be the same as that of the config parameter in the Sin kernel API template.

typeSize

Input

Size of the input data type, in bytes. For example, if the input data type is half, set this parameter to 2.

maxLiveNodeCount

Output

Maximum number of live nodes, indicating how many times the temporary space is compared to the data volume of a single computation.

extraBuf

Output

Size of the used extra temporary space, in bytes.

Returns

None

Restrictions

If currentShapeSize x typeSize < 256B is obtained based on maxLiveNodeCount and extraBuf, currentShapeSize should be rounded up based on the value of 256B/typeSize.

Example

For details about the complete call example, see More Examples.
1
2
3
4
5
6
uint32_t maxLiveNodeCount = 0;
uint32_t extraBuf = 0;
AscendC::GetSinTmpBufferFactorSize(typeSize, maxLiveNodeCount, extraBuf);
AscendC::SinConfig config;
config.algo = AscendC::SinAlgo::RADIAN_REDUCTION;
AscendC::GetSinTmpBufferFactorSize(config, typeSize, maxLiveNodeCount, extraBuf);