GetDropOutMaxMinTmpSize
Function Usage
Obtains the DropOut tiling parameter.
Prototype
1 | uint32_t GetDropOutMaxTmpSize(const ge::Shape& srcShape, const uint32_t typeSize, const bool isReuseSource) |
1 | uint32_t GetDropOutMinTmpSize(const ge::Shape& srcShape, const uint32_t typeSize, const bool isReuseSource) |
1 | void GetDropOutMaxMinTmpSize(const ge::Shape& srcShape, const uint32_t typeSize, const bool isReuseSource, uint32_t& maxValue, uint32_t& minValue) |
Parameters
Parameter |
Input/Output |
Description |
|---|---|---|
srcShape |
Input |
Input shape. |
typeSize |
Input |
Size of the computation data type. The value for half is 2, and the value for float is 4. |
isReuseSource |
Input |
This parameter is reserved. Retain the default value false. |
maxValue |
Output |
Tiling information (maximum temporary space size) required by the DropOut API. NOTE:
maxValue is for reference only and may be larger than the available space of the Unified Buffer. In this case, select a proper temporary space size based on the remaining space of the Unified Buffer. |
minValue |
Output |
Tiling information (minimum temporary space size) required by the DropOut API. |
Returns
GetDropOutMaxTmpSize returns the maximum temporary space size required by DropOut computation.
GetDropOutMinTmpSize returns the minimum temporary space size required by DropOut computation.
No value is returned for GetDropOutMaxMinTmpSize.
Restrictions
None
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <vector> #include "register/op_def_registry.h" #include "register/tilingdata_base.h" #include "tiling/tiling_api.h" namespace optiling { BEGIN_TILING_DATA_DEF(DropoutCustomTilingData) TILING_DATA_FIELD_DEF(uint32_t, firstAxis); TILING_DATA_FIELD_DEF(uint32_t, srcLastAxis); TILING_DATA_FIELD_DEF(uint32_t, maskLastAxis); TILING_DATA_FIELD_DEF(uint32_t, tmpBufferSize); END_TILING_DATA_DEF; static ge::graphStatus TilingFunc(gert::TilingContext* context) { // Input source shapes. int64_t firstAxis = 16; int64_t srcLastAxis = 64; int64_t maskLastAxis = 64; std::vector<int64_t> srcDims = {firstAxis, srcLastAxis, maskLastAxis}; uint32_t typeSize = 2; ge::Shape shape(srcDims); uint32_t minValue = 0; uint32_t maxValue = 0; AscendC::GetDropOutMaxMinTmpSize(shape, typeSize, false, maxValue, minValue); auto platformInfo = context->GetPlatformInfo(); auto ascendcPlatform = platform_ascendc::PlatformAscendC(platformInfo); uint64_t tailSize = 0; // remaining space of UB ascendcPlatform.GetCoreMemSize(platform_ascendc::CoreMemType::UB, tailSize); // In this example, full UB space is used. In the actual situation, the already used UB space must be subtracted from tailSize. auto tmpSize = tailSize >= maxValue ? maxValue : tailSize; DropoutCustomTilingData tiling; tiling.set_firstAxis(firstAxis); tiling.set_srcLastAxis(srcLastAxis); tiling.set_maskLastAxis(maskLastAxis); tiling.set_tmpBufferSize(tmpSize); context->SetBlockDim(1); tiling.SaveToBuffer(context->GetRawTilingData()->GetData(), context->GetRawTilingData()->GetCapacity()); context->GetRawTilingData()->SetDataSize(tiling.GetDataSize()); context->SetTilingKey(1); return ge::GRAPH_SUCCESS; } } // namespace optiling |