深鉴科技DNNC编译器浅析

从官网下载了他们产品试用版,目前手头没有合适的开发板,没法运行实际的例子,但是作为一个程序猿,我比较感兴趣的是其DNNC编译器的实现。看其文档,其可以让用户轻松完成从Caffe框架到DPU的转换。本文基于其软件接口,进行了简单的分析总结,仅供参考。

分析软件包中 /host_x86/pkgs/bin/dnnc文件,可以得到如下的一些发现:

1、集成了Caffe中proto并进行了扩展,用于读取”.prototxt”和”.caffemodel”文件,还增加了如下的参数:

caffe::FixedParameter,猜测这个新增的参数和定点化有关。标准的Caffe里未找到这个参数,可能是深鉴或者其他开发者做了扩展。
主要成员如下,包含了定点化位宽、定点方法等标志位。

caffe::FixedParameter
caffe::FixedParameter::FixedMethod_MAX
caffe::FixedParameter::FixedMethod_MIN
caffe::FixedParameter::kFixInfoFieldNumber
caffe::FixedParameter::kBitWidthFieldNumber
caffe::FixedParameter::DIFF_A
caffe::FixedParameter::DIFF_S
caffe::FixedParameter::OVER_FLOW

caffe::TilingParameter, 猜测和数据划分有关,由于查看不到有用信息,这个不列举了。

2、DNNC中会把神经网络模型编译成内部计算图IR,附加控制流和数据流。LayerGraph、SuperGraph等数据结构在其中扮演了重要的角色,其主要接口有:

忽略函数的返回值:

dnnc::LayerGraph
dnnc::LayerGraph::CreateLayer(dnnc::LayerType, const std::string&)
dnnc::LayerGraph::CreateLayer(dnnc::LayerType, const std::string&, const dnnc::parameter_t&)
dnnc::LayerGraph::CreateLayer(dnnc::Layer*)
dnnc::LayerGraph::RemoveLayer(dnnc::Layer*)
dnnc::LayerGraph::CopyLayer(const dnnc::Layer*)
dnnc::LayerGraph::AddControlLayer()
dnnc::LayerGraph::AddEdge(dnnc::Layer*, int, dnnc::Layer*, int)
dnnc::LayerGraph::RemoveEdge(const dnnc::LayerEdge*)
dnnc::LayerGraph::CreateSubgraph(std::set< const dnnc::Layer* >)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值