ReserveLocalMemory

功能说明

该函数用于在Unified Buffer中预留指定大小的内存空间。调用该接口后,使用GetCoreMemSize可以获取实际可用的剩余Unified Buffer空间大小

函数原型

1
void ReserveLocalMemory(ReservedSize size)

参数说明

参数名

输入/输出

说明

ReservedSize

输入

需要预留的空间大小。

1
2
3
4
5
enum class ReservedSize {
    RESERVED_SIZE_8K,  // 预留8 * 1024B空间
    RESERVED_SIZE_16K, // 预留16 * 1024B空间
    RESERVED_SIZE_32K, // 预留32 * 1024B空间
};

返回值

约束说明

多次调用该函数时,仅保留最后一次调用的结果。

调用示例

ge::graphStatus TilingXXX(gert::TilingContext* context) {
    auto ascendcPlatform = platform_ascendc::PlatformAscendC(context->GetPlatformInfo());
    uint64_t ub_size, l1_size;
    // 预留8KB的Unified Buffer内存空间
    ascendcPlatform.ReserveLocalMemory(platform_ascendc::ReservedSize::RESERVED_SIZE_8K);
    // 获取Unified Buffer和L1的实际可用内存大小
    ascendcPlatform.GetCoreMemSize(platform_ascendc::CoreMemType::UB, ub_size);
    ascendcPlatform.GetCoreMemSize(platform_ascendc::CoreMemType::L1, l1_size);
    // ...
    return ret;
}

完整样例可参考与数学库高阶API配合使用的样例