使用RDK X5时,看量化参数手册是有run on BPU 的选项的,但是S100似乎没有,那么如何调整算子运行在哪呢?
从提供的网页内容来看,RDK S100确实支持通过 quant_config 配置文件来指定算子的计算精度(如 int8、int16、float16),但没有直接提供“运行在BPU上”的选项。不过,可以通过配置算子的输入/输出数据类型(如 int16)来间接影响算子的执行位置。
以下是关键信息总结:
如何控制算子运行位置?
虽然 S100 没有像 X5 那样提供 run on BPU 的显式选项,但可以通过以下方式间接控制算子的执行位置:
1. 使用 node_config 或 op_config 配置算子精度
- 在
quant_config.json中,你可以为特定节点或算子类型配置其输入/输出数据类型。 - 例如:
这会强制该节点以 int16 运行,而工具链会自动处理上下文(如前驱和后继算子)是否支持 int16,从而决定是否在 BPU 上执行。"node_config": { "Conv_0": { "qtype": "int16" } }
2. int16 配置会触发 BPU 优化
- 根据文档说明,当配置某个算子为 int16 时,工具链会自动检查其上下文是否支持 int16,并尝试将其分配到 BPU 上执行(如果硬件支持)。
- 如果不支持,会回退到 int8 或 float32。
注意:并非所有算子都支持 int16,具体支持列表请参考 工具链算子支持约束列表。
常见误区
- “run on BPU” 选项不存在于 S100 —— 这是用户提问中提到的 X5 的功能,S100 不支持显式指定。
- 但通过精度配置可以间接控制执行位置 —— 工具链会根据算子类型、数据类型和硬件能力自动选择最优执行设备(CPU/BPU)。
实际操作建议
-
先确认算子是否支持 int16
查阅 S100 Torch 算子支持列表 或 BPU 约束列表。 -
在
quant_config.json中添加配置
示例:{ "node_config": { "conv1": { "qtype": "int16" } } } -
编译模型并观察日志
编译时工具链会打印算子执行位置(如 “Conv1: run on BPU” 或 “Conv1: fallback to CPU”),以此验证配置是否生效。
参考文档
总结
RDK S100 不支持直接指定“运行在BPU上”,但可以通过
quant_config配置算子为 int16 来间接控制其执行位置。工具链会根据硬件能力和算子兼容性自动选择最优执行设备(BPU/CPU)。
如果你希望某个算子必须在 BPU 上运行,建议优先配置为 int16,并结合日志确认执行位置。如果某些算子不支持 int16,可能需要调整模型结构或接受回退到 CPU 执行。
如有进一步问题,可提供具体的算子名称或模型结构,我可以帮你分析是否支持 int16 或推荐替代方案。