GetDropOutMaxMinTmpSize【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能说明用于获取DropOut Tiling参数。函数原型uint32_t GetDropOutMaxTmpSize(const ge::Shape srcShape, const uint32_t typeSize, const bool isReuseSource)uint32_t GetDropOutMinTmpSize(const ge::Shape srcShape, const uint32_t typeSize, const bool isReuseSource)void GetDropOutMaxMinTmpSize(const ge::Shape srcShape, const uint32_t typeSize, const bool isReuseSource, uint32_t maxValue, uint32_t minValue)参数说明表1参数列表参数名输入/输出描述srcShape输入输入的shape信息。typeSize输入计算的数据类型大小half2float4。isReuseSource输入预留参数暂未启用保持默认值false即可。maxValue输出输出DropOut接口所需的tiling信息最大临时空间大小。说明maxValue仅作为参考值有可能大于Unified Buffer剩余空间的大小该场景下开发者需要根据Unified Buffer剩余空间的大小来选取合适的临时空间大小。minValue输出输出DropOut接口所需的tiling信息最小临时空间大小。返回值说明GetDropOutMaxTmpSize返回DropOut接口能完成计算所需最大临时空间大小。GetDropOutMinTmpSize返回DropOut接口能完成计算所需最小临时空间大小。GetDropOutMaxMinTmpSize无返回值。约束说明无调用示例下文呈现了一个host侧调用GetDropOutMaxMinTmpSize接口的使用示例通过该接口获取DropOut计算所需的最大最小临时空间大小开发者基于此范围选择合适的空间大小作为Tiling参数传递到kernel侧使用。配套的kernel侧使用样例请参考调用示例。#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::vectorint64_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; // ub剩余空间大小 // 本样例中使用完整的ub空间实际情况下tailSize需要减掉用户已使用的ub空间 ascendcPlatform.GetCoreMemSize( platform_ascendc::CoreMemType::UB, 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【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考