开发者
资源

aclrtMemManagedRangeAttribute

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
typedef enum aclrtMemManagedRangeAttribute {
    ACL_MEM_RANGE_ATTRIBUTE_READ_MOSTLY  = 1,
    ACL_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION,
    ACL_MEM_RANGE_ATTRIBUTE_ACCESSED_BY,
    ACL_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_TYPE,
    ACL_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_ID,
    ACL_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION,
    ACL_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_TYPE,
    ACL_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_ID
} aclrtMemManagedRangeAttribute;

枚举项说明如下:

  • ACL_MEM_RANGE_ATTRIBUTE_READ_MOSTLY

    查询指定内存是否设置了read mostly属性。

    对于通过aclrtMemManagedAdvise接口设置ACL_MEM_ADVISE_SET_READ_MOSTLY或ACL_MEM_ADVISE_UNSET_READ_MOSTLY策略属性的情况,可以通过ACL_MEM_RANGE_ATTRIBUTE_READ_MOSTLY选项查询read mostly属性值。

    当指定内存范围内的所有内存页都设置了read mostly属性,则返回1,否则返回0。由于属性值为整数,因此dataSize必须设置为4。

  • ACL_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION

    查询指定内存是否设置了preferred location属性。

    对于通过aclrtMemManagedAdvise接口设置ACL_MEM_ADVISE_SET_PREFERRED_LOCATION或ACL_MEM_ADVISE_UNSET_PREFERRED_LOCATION策略属性的情况,可以通过ACL_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION选项查询preferred location属性值。

    属性值说明如下:

    • 如果指定内存范围内所有内存页都设置了将某个Device或NUMA节点作为首选位置,则返回结果为该Device的ID或NUMA节点ID,否则返回-2。
    • 如果指定内存范围内所有内存页都设置了将Host作为首选位置,则返回结果为-1,否则返回-2。

    由于属性值为整数,因此dataSize必须设置为4。

  • ACL_MEM_RANGE_ATTRIBUTE_ACCESSED_BY

    查询指定内存是否设置了accessed by属性。

    对于通过aclrtMemManagedAdvise接口设置ACL_MEM_ADVISE_SET_ACCESSED_BY或ACL_MEM_ADVISE_UNSET_ACCESSED_BY策略属性的情况,可以通过ACL_MEM_RANGE_ATTRIBUTE_ACCESSED_BY选项查询accessed by属性值。

    属性值为对指定内存范围设置了ACL_MEM_ADVISE_SET_ACCESSED_BY属性的Host或Device或NUMA节点ID列表,但需注意:

    • 如果用户申请的data数组大小大于设置了accessed by属性的Host或Device或NUMA节点数量时,则超出部分将返回-2。
    • 如果用户申请的data数组大小小于设置了accessed by属性的Host或Device或NUMA节点数量时,则以data数组大小为准,但无法保证存放的是哪些节点的ID。

    由于属性值为整数,dataSize必须设置为4的非零整数倍。

  • ACL_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_TYPE

    查询指定内存的首选位置的类型。需要注意的是,待查询的内存页的实际位置类型可能与首选位置类型不同。

    如果指定内存范围内的所有内存页都设置Host或相同Device或相同NUMA节点作为其首选位置,则分别返回ACL_MEM_LOCATIONTYPE_HOST、ACL_MEM_LOCATIONTYPE_DEVICE或ACL_MEM_LOCATIONTYPE_HOST_NUMA,否则返回ACL_MEM_LOCATIONTYPE_INVALID。

    dataSize必须为sizeof(aclrtMemManagedLocationType),data会被解析为aclrtMemManagedLocationType类型。

  • ACL_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_ID

    查询指定内存的首选位置的ID。

    如果指定内存范围内的所有内存页都设置相同Device或相同NUMA节点作为其首选位置,则分别返回Device ID或NUMA节点ID;否则ID无效。

    由于属性值为整数,因此dataSize必须设置为4。

  • ACL_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION(预留属性)

    查询指定内存最后一次通过预取接口显式预取到的位置。该返回值仅表示应用程序最后一次请求预取内存范围的位置,并不表示预取操作是否已经完成。

    属性值说明如下:

    • 如果指定内存范围内所有内存页最后一次预取的位置为某个Device或NUMA节点,则返回结果为该Device的ID或NUMA节点ID,否则返回-2。
    • 如果指定内存范围内所有内存页最后一次预取的位置为Host,则返回结果为-1,否则返回-2。

    由于属性值为整数,因此dataSize必须设置为4。

  • ACL_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_TYPE(预留属性)

    查询指定内存最后一次通过内存预取接口显式预取到的位置类型。该返回值仅表示应用程序最后一次请求预取内存范围的位置,并不表示预取操作是否已经完成。

    如果指定内存范围内的所有内存页最后一次预取的位置都是Host或相同Device或相同NUMA节点,则分别返回ACL_MEM_LOCATIONTYPE_HOST、ACL_MEM_LOCATIONTYPE_DEVICE或ACL_MEM_LOCATIONTYPE_HOST_NUMA,否则返回ACL_MEM_LOCATIONTYPE_INVALID。

    dataSize必须为sizeof(aclrtMemManagedLocationType),data会被解析为aclrtMemManagedLocationType类型。

  • ACL_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_ID(预留属性)

    查询指定内存最后一次通过预取接口显式预取到的位置的ID。

    如果指定内存范围内的所有内存页最后一次预取的位置为相同Device或相同NUMA节点,则分别返回Device ID或NUMA节点ID;否则ID无效。

    由于属性值为整数,因此dataSize必须设置为4。