aclrtLaunchKernelAttrValue
1 2 3 4 5 6 7 8 9 10 11 | typedef union aclrtLaunchKernelAttrValue { uint8_t schemMode; uint32_t dynUBufSize; aclrtEngineType engineType; uint32_t blockDimOffset; uint8_t isBlockTaskPrefetch; uint8_t isDataDump; uint16_t timeout; aclrtTimeoutUs timeoutUs; uint32_t rsv[4]; } aclrtLaunchKernelAttrValue; |
成员说明如下:
- schemMode
取值如下:
- 0:普通调度模式,有空闲的核,就启动算子执行。例如,当numBlocks为8时,表示算子核函数将会在8个核上执行,这时如果指定普通调度模式,则表示只要有1个核空闲了,就启动算子执行。
- 1:batch调度模式,必须所有所需的核都空闲了,才启动算子执行。例如,当numBlocks为8时,表示算子核函数将会在8个核上执行,这时如果指定batch调度模式,则表示必须等8个核都空闲了,才启动算子执行。
- dynUBufSize
用于指定SIMT(Single Instruction Multiple Thread)算子执行时需要的UB(Unified Buffer,统一缓冲区)动态内存大小,单位Byte。纯SIMD算子该参数仅支持设置为0。
仅Atlas 350 加速卡支持该参数。
- engineType
表示算子执行引擎。类型定义请参见aclrtEngineType。
仅
Atlas 推理系列产品 支持该参数。 - blockDimOffset
表示numBlocks偏移量。numBlocks用于指定算子的核函数将会在几个核上执行。
仅Atlas 推理系列产品 支持该参数。- 如果numBlocks ≤ AI Core核数,则无需使用Vector Core上计算,可将engineType配置为ACL_RT_ENGINE_TYPE_AIC(表示在AI Core上计算),则此处的blockDimOffset配置为0。
- 如果numBlocks > AI Core核数,则需:
- 在一个Stream上下发任务,将engineType配置为ACL_RT_ENGINE_TYPE_AIC(表示在AI Core上计算),此处的blockDimOffset配置为0。
- 在另一个Stream上下发任务,将engineType配置为ACL_RT_ENGINE_TYPE_AIV(表示在Vector Core上计算),此处的blockDimOffset配置为aicorenumBlocks,aicorenumBlocks的计算公式如下:
- numBlocks ≤ AI Core核数+Vector Core核数时,aicorenumBlocks = AI Core核数
- 否则,aicorenumBlocks = 向上取整 ( numBlocks * ( AI Core核数 ) / ( AI Core核数 + Vector Core核数 ))
- isBlockTaskPrefetch
- isDataDump
- timeout
表示任务调度器等待任务执行的超时时间。仅适用于执行AI CPU或AI Core算子的场景。
取值如下:
- 0:表示永久等待;
- >0:配置具体的超时时间,单位是秒。
- timeoutUs
表示任务调度器等待任务执行的超时时间,单位微秒。类型定义请参见aclrtTimeoutUs。
若aclrtTimeoutUs结构体中,timeoutLow和timeoutHigh均被配置为0,则表示永久等待。
对于同一个Launch Kernel任务,不能同时配置timeoutUs和timeout参数,否则返回报错。
- rsv
父主题: 数据类型及其操作接口