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_TYPE_LOW_BAND_WIDTH = 0x0100, ACL_MEM_TYPE_HIGH_BAND_WIDTH = 0x1000 } 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_TYPE_LOW_BAND_WIDTH或ACL_MEM_TYPE_HIGH_BAND_WIDTH,则系统内部会默认采取ACL_MEM_MALLOC_HUGE_FIRST,优先申请大页。
枚举项 |
说明 |
---|---|
ACL_MEM_MALLOC_HUGE_FIRST |
当申请的内存小于等于1M时,即使使用该内存分配规则,也是申请普通页的内存。当申请的内存大于1M时,优先申请大页内存,如果大页内存不够,则使用普通页的内存。 |
ACL_MEM_MALLOC_HUGE_ONLY |
仅申请大页,如果大页内存不够,则返回错误。 |
ACL_MEM_MALLOC_NORMAL_ONLY |
仅申请普通页,如果普通页内存不够,则返回错误。 |
ACL_MEM_MALLOC_HUGE_FIRST_P2P |
仅Device之间内存复制场景下申请内存时使用该选项,表示优先申请大页内存,如果大页内存不够,则使用普通页的内存。 Atlas 200/300/500 推理产品,当前版本不支持该选项。 |
ACL_MEM_MALLOC_HUGE_ONLY_P2P |
仅Device之间内存复制场景下申请内存时使用该选项,仅申请大页内存,如果大页内存不够,则返回错误。 Atlas 200/300/500 推理产品,当前版本不支持该选项。 |
ACL_MEM_MALLOC_NORMAL_ONLY_P2P |
仅Device之间内存复制场景下申请内存时使用该选项,仅申请普通页的内存。 Atlas 200/300/500 推理产品,当前版本不支持该选项。 |
ACL_MEM_TYPE_LOW_BAND_WIDTH |
从带宽高的物理内存上申请内存。 设置该选项无效,系统默认会根据硬件支持的内存类型选择。 |
ACL_MEM_TYPE_HIGH_BAND_WIDTH |
从带宽低的物理内存上申请内存。 设置该选项无效,系统默认会根据硬件支持的内存类型选择。 |