开发者
资源

aclrtFuncAttribute

1
2
3
4
5
typedef enum {
    ACL_FUNC_ATTR_KERNEL_TYPE = 1,        // Kernel类型
    ACL_FUNC_ATTR_KERNEL_RATIO = 2,       // Kernel执行时需要的Cube Core与Vector Core的比例
    ACL_FUNC_ATTR_KERNEL_SCHED_MODE = 3,  // Kernel调度模式
} aclrtFuncAttribute;
  • 当属性设置为ACL_FUNC_ATTR_KERNEL_TYPE时,属性值说明请参见aclrtKernelType
  • 当属性设置为ACL_FUNC_ATTR_KERNEL_RATIO时,属性值需要使用以下方式获取:
    1
    2
    3
    uint16_t* ratioArr = reinterpret_cast<uint16_t*>(&attrValue);
    uint16_t aicratio = ratioArr[1];   // 表示Cube Core的比例
    uint16_t aivratio = ratioArr[0];   // 表示Vector Core的比例
    

    该属性在各产品型号上支持的情况不同,如下:

    • Atlas 350 加速卡,不支持
    • Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持
    • Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持
    • Atlas 200I/500 A2 推理产品,不支持
    • Atlas 推理系列产品,支持
    • Atlas 训练系列产品,不支持
  • 当属性设置为ACL_FUNC_ATTR_KERNEL_SCHED_MODE时,属性值说明如下:
    • 0:普通调度模式,有空闲的核,就启动算子执行。例如,当numBlocks为8时,表示算子核函数将会在8个核上执行,这时如果指定普通调度模式,则表示只要有1个核空闲了,就启动算子执行。
    • 1:batch调度模式,必须所有所需的核都空闲了,才启动算子执行。例如,当numBlocks为8时,表示算子核函数将会在8个核上执行,这时如果指定batch调度模式,则表示必须等8个核都空闲了,才启动算子执行。