aclrtMemMallocPolicy

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;

此处支持单个枚举项,也支持多个枚举项位或:

表1 枚举项说明

枚举项

说明

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

从带宽低的物理内存上申请内存。

设置该选项无效,系统默认会根据硬件支持的内存类型选择。