1 2 3 4 5 6 7 8 9 10 11 12 13 | typedef enum aclrtMemMallocPolicy { ACL_MEM_MALLOC_HUGE_FIRST, ACL_MEM_MALLOC_HUGE_ONLY, ACL_MEM_MALLOC_NORMAL_ONLY, ACL_MEM_MALLOC_HUGE_FIRST_P2P, ACL_MEM_MALLOC_HUGE_ONLY_P2P, ACL_MEM_MALLOC_NORMAL_ONLY_P2P, ACL_MEM_MALLOC_HUGE1G_ONLY, ACL_MEM_MALLOC_HUGE1G_ONLY_P2P, ACL_MEM_TYPE_LOW_BAND_WIDTH = 0x0100U, ACL_MEM_TYPE_HIGH_BAND_WIDTH = 0x1000U, ACL_MEM_ACCESS_USER_SPACE_READONLY = 0x100000U, } aclrtMemMallocPolicy; |
此处支持单个枚举项,也支持多个枚举项位或:
支持这三项(ACL_MEM_MALLOC_HUGE_FIRST、ACL_MEM_MALLOC_HUGE_ONLY、ACL_MEM_MALLOC_NORMAL_ONLY)与这两项(ACL_MEM_TYPE_LOW_BAND_WIDTH、ACL_MEM_TYPE_HIGH_BAND_WIDTH)组合,例如:ACL_MEM_MALLOC_HUGE_FIRST | ACL_MEM_TYPE_HIGH_BAND_WIDTH
枚举项说明如下:
申请大页内存,内存申请粒度为2M,不足2M的倍数,向上2M对齐。
当申请的内存小于等于1M时,即使使用该内存分配规则,也是申请普通页的内存。当申请的内存大于1M时,优先申请大页内存,如果大页内存不够,则使用普通页的内存。
申请大页内存,内存申请粒度为2M,不足2M的倍数,向上2M对齐。
配置该选项时,表示仅申请大页,如果大页内存不够,则返回错误。
两个Device之间内存复制场景下使用该选项申请大页内存,内存申请粒度为2M,不足2M的倍数,向上2M对齐。
配置该选项时,表示优先申请大页内存,如果大页内存不够,则使用普通页的内存。
对于
两个Device之间内存复制场景下使用该选项申请大页内存,内存申请粒度为2M,不足2M的倍数,向上2M对齐。
配置该选项时,表示仅申请大页内存,如果大页内存不够,则返回错误。
对于
两个Device之间内存复制场景下使用该选项,表示仅申请普通页的内存。
对于
申请大页内存,内存申请粒度为1G,不足1G的倍数,向上1G对齐。例如申请1.9G时,按向上对齐的原则,实际会申请2G。
配置为该选项时,表示仅申请1G大页,如果1G大页内存不够,则返回错误。由于1G大页资源有限,可尝试使用ACL_MEM_MALLOC_HUGE_FIRST选项申请大页内存。
该选项与ACL_MEM_MALLOC_HUGE_ONLY选项相比,ACL_MEM_MALLOC_HUGE_ONLY的内存申请粒度为2M,如果要申请1G大小的大页内存,会占用1024/2=512个页表,但ACL_MEM_MALLOC_HUGE1G_ONLY的内存申请粒度为1G,1G大页内存只占用1个页表,能有效降低页表数量,有效扩大TLB(Translation Lookaside Buffer)缓存的地址范围,从而提升离散访问的性能。TLB是AI处理器中用于高速缓存的硬件模块,用于存储最近使用的虚拟地址到物理地址的映射。
两个Device之间内存复制场景下使用该选项申请大页内存,内存申请粒度为1G,不足1G的倍数,向上1G对齐。例如申请1.9G时,按向上对齐的原则,实际会申请2G。
配置为该选项时,表示仅1G申请大页,如果1G大页内存不够,则返回错误。由于1G大页资源有限,可尝试使用ACL_MEM_MALLOC_HUGE_FIRST_P2P选项申请大页内存。
该选项与ACL_MEM_MALLOC_HUGE_ONLY_P2P选项相比,ACL_MEM_MALLOC_HUGE_ONLY_P2P的内存申请粒度为2M,如果要申请1G大小的大页内存,会占用1024/2=512个页表,但ACL_MEM_MALLOC_HUGE1G_ONLY_P2P的内存申请粒度为1G,1G大页内存只占用1个页表,能有效降低页表数量,有效扩大TLB(Translation Lookaside Buffer)缓存的地址范围,从而提升离散访问的性能。TLB是AI处理器中用于高速缓存的硬件模块,用于存储最近使用的虚拟地址到物理地址的映射。
设置该选项无效,系统默认会根据硬件支持的内存类型选择。
设置该选项无效,系统默认会根据硬件支持的内存类型选择。