长期支持版本

    社区创新版本

      使用说明

      简介

      GMEM通过特定的flag申请对等互访的虚拟内存,并对外提供了一些内存优化语义,通过这部分内存语义可以达到性能优化的效果。 libgmem是GMEM用户接口的抽象层,主要功能是是对上述内存语义进行封装,简化用户的使用。

      接口说明

      • 内存申请

        GMEM扩展了mmap的含义,增加了一个flag MAP_PEER_SHARED申请异构内存,使用时默认返回2MB对齐的虚拟地址。

        addr = mmap(NULL , size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_PEER_SHARED, -1, 0);
        
      • 内存释放

        通过munmap接口释放host和device的内存。

        munmap(addr, size);
        
      • 内存语义

        FreeEager:对于给定范围[addr, addr + size]的地址段,FreeEager会对范围向内对齐页面大小的完整页面进行释放(默认页面大小2M)。如果范围内不存在完整页面,将直接返回成功。

        接口成功返回0,失败返回错误码。

        接口原型: int gmemFreeEager(unsigned long addr, size_t size, void *stream);
        接口用法: ret = gmemFreeEager(addr, size, stream);
        

        Prefetch:对于给定范围[addr, addr + size]的地址段,Prefetch会对范围向外对齐页面大小的完整页面(覆盖整个地址段)进行预取。确保指定的计算单元设备hnid在接下来对vma发起的访问不会触发page fault。

        接口成功返回0,失败返回错误码。

        接口原型: int gmemPrefetch(unsigned long addr, size_t size, int hnid, void *stream);
        接口用法: ret = gmemPrefetch(addr, size, hnid, stream);
        

        在上述内存语义使用的时候stream为空表示同步调用,非空表示异步调用。

      • 其他接口

        获取当前设备的numaid。接口成功返回设备号,失败返回错误码。

        接口原型: int gmemGetNumaId(void);
        接口用法: numaid = gmemGetNumaId();
        

        获取内核的gmem统计信息。

        cat /proc/gmemstat
        

      约束限制

      1. 目前仅支持2M大页,所以host OS以及NPU卡内OS的透明大页需要默认开启。
      2. 通过MAP_PEER_SHARED申请的异构内存目前不支持fork时继承。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份