当前位置: 首页 > news >正文

CANN/GE Python内存分配器API

Allocator

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

产品支持情况

产品是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

模块导入

from ge.allocator import Allocator, MemBlock

功能说明

Allocator 是外部内存分配器的抽象基类,用于自定义设备内存管理策略。MemBlock 表示已分配的内存块,持有设备内存地址和大小。用户需要继承 Allocator 类并实现 malloc 和 free 方法,然后通过 Session.register_external_allocator() 注册到指定 stream。

类定义

MemBlock 类

class MemBlock: def __init__(self, addr: int, size: int) @property def addr(self) -> int @property def size(self) -> int

Allocator 类

class Allocator(ABC): @abstractmethod def malloc(self, size: int) -> MemBlock @abstractmethod def free(self, block: MemBlock) -> None

函数说明

MemBlock 类

__init__
def __init__(self, addr: int, size: int)

功能说明:创建内存块实例,持有设备内存地址和大小信息。

参数说明

参数名类型必选/可选说明
addrint必选设备内存地址。
sizeint必选内存大小,单位为字节。

返回值说明:无返回值。

addr(属性)
@property def addr(self) -> int

功能说明:获取设备内存地址。

参数说明:无参数。

返回值说明

返回值类型说明
int设备内存地址。
size(属性)
@property def size(self) -> int

功能说明:获取内存大小。

参数说明:无参数。

返回值说明

返回值类型说明
int内存大小,单位为字节。

Allocator 类

malloc
@abstractmethod def malloc(self, size: int) -> MemBlock

功能说明:分配指定大小的设备内存,返回包含设备内存地址和大小的 MemBlock 对象。此为抽象方法,子类必须实现。

参数说明

参数名类型必选/可选说明
sizeint必选待分配的内存大小,单位为字节。

返回值说明

返回值类型说明
MemBlock已分配的内存块对象,包含有效的设备内存地址。

约束说明

  • 子类必须实现此方法,否则无法实例化。
  • 分配失败时应抛出 MemoryError。
free
@abstractmethod def free(self, block: MemBlock) -> None

功能说明:释放之前通过 malloc 分配的设备内存。此为抽象方法,子类必须实现。

参数说明

参数名类型必选/可选说明
blockMemBlock必选待释放的内存块对象,应为之前通过 malloc 返回的 MemBlock 实例。

返回值说明:无返回值。

约束说明

  • 子类必须实现此方法,否则无法实例化。
  • 不应对同一内存块重复释放。

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1120639/

相关文章:

  • Video2X终极指南:免费AI视频放大与帧率提升神器
  • 昇腾/GE LLM数据分发分配缓存块API
  • Duix.Avatar本地部署实战:打造属于你的AI数字人工作室
  • IpaDownloadTool使用技巧:二维码扫描与URL Scheme深度应用
  • Each定时器库深度解析:为什么它是Swift开发者必备的10个理由
  • Juggl节点面板使用技巧:高效管理和操作知识图谱中的节点
  • CANN/mat-chem-sim-pred:SOPDT批量PID候选评分算法
  • Heya自定义操作开发指南:超越邮件的多渠道营销自动化
  • 如何一键备份微信聊天记录:WeChatMsg让你的珍贵对话永不丢失
  • AI音乐写歌用什么App软件?2026国产工具实测推荐
  • status-go核心架构解析:理解Status应用的Go后端实现原理
  • DeepSeek与豆包中文实测:办公学习场景下的AI应用选择指南
  • CANN/asc-devkit Conv3DBackpropInput GetTiling函数
  • TVA:具身智能的动力引擎与能力底座(2)
  • E-Hentai Downloader与其他工具对比:为什么选择这个高效下载方案
  • IpaDownloadTool常见问题:解决IPA提取失败的7种方法
  • CANN/GE DFlow API MetaContext类
  • 如何在30分钟内开始你的DD奇幻冒险:dnd-tldr项目完全指南
  • Leaps API开发入门:将实时协作功能集成到你自己的应用中的实用指南
  • Boss Show Time:5分钟掌握招聘时间先机,告别错过最新岗位的遗憾!
  • CANN/cannbot-skills Ascend C算子白盒测试设计模板
  • HookLib² C++辅助工具使用指南:HookFactory与模板函数实战
  • 升势动能主图之红钻选股指标公式
  • 深入理解tools.cli的核心功能:parse-opts函数全方位解析
  • Blazingly-fast AI聊天新纪元:开源免费应用chat0全面解析
  • RestFB性能优化技巧:如何高效管理Facebook API调用
  • AI与SQL结合:SQL Ultimate Course智能查询新趋势
  • 百度网盘秒传链接网页工具终极指南:从零开始快速掌握文件极速转存
  • ContEx数据集处理:从原始数据到精美图表的完整流程指南
  • 如何用Flask-profiler定位最耗时的API端点?实战案例分享