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
API |
Input/Output |
Function |
|---|---|---|
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.
Examples
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 |