Ascend Cann 试用

Ascend Cann toolkit是开发昇腾算子、模型的工具。提供了x86和aarch64两个版本。根据不同芯片,如910B训练卡和310推理卡,提供了不同的kernel安装包,同一芯片版本下kernel同时提供了x86和aarch64的驱动版本。

Cann包的下载地址在 https://www.hiascend.com/developer/download/community/result?module=cann,

笔记本硬件上没有昇腾卡的情况下,依然可以使用很多工具,如生成atc离线模型生成。x86和aarch64生成的om离线模型文件可以交互使用吗?

香橙派

orange pi 上卡为Ascend 310B4。
310B4的cce指令和910B4的指令完全不一样,在 Ascend/ascend-toolkit/8.0.RC2.alpha002/aarch64-linux/ccec_compiler/lib/clang/15.0.5/include/__clang_cce*.h中定义了cce指令的头文件接口。
310B4在cce指令中通过__DAV_M300__标识npu指令状态,而不是__DAV_C220_VEC__/__DAV_C220_CUBE__

在home目录下默认有个samples/notebooks/start_notebook.sh, 运行加ip,可以启动一个jupyter的服务器,供写python的代码,需要的时候可以使用。

cann包中,有两个目录下的so,一个是stub,一个是正常版本的so。
stub版本在/home/HwHiAiUser/Ascend/ascend-toolkit/latest/runtime/lib64/和/home/HwHiAiUser/Ascend/ascend-toolkit/latest/runtime/lib64/stub
正常版本在/home/HwHiAiUser/Ascend/ascend-toolkit/latest/runtime/lib64/和/home/HwHiAiUser/Ascend/ascend-toolkit/latest/runtime/lib64/

stub即打桩版本,so都很小,各种函数只有一个接口,实现为空,软链接到如下地方,表示开发用的包,真实运行时使用正常包。
/home/HwHiAiUser/Ascend/ascend-toolkit/8.0.RC2.alpha002/aarch64-linux/devlib/linux/aarch64/

stub的好处是可以做到阻断依赖。如很多真实运行的库会依赖npu driver, 但开发环境上可能有npu硬件,没有driver,会阻断开发。而实际上,开发者使用的api靠近上层,不会接触到driver层。

netron

netron是个开源的可视化onnx/om/caffe等众多模型文件的工具。
下载后,可以通过顶层目录的package.py启动一个服务,在浏览器中可视化。

python3 package.py install # 这一步将最新修改安装到dist中
python3 package.py start --host 0.0.0.0

atc转换过程中发现operator attr中名字有乱码。打开开,名字像是一个序号。猜测很多attr的名字是一样的,为了节省空间,做的一个索引。
而在model的attr中看到关键字,attr_name_enum, 后面列了一堆常见的名字,像是attr名字列表。可以尝试用这些列表去索引。
所以OpDef的attr属性中,key有两种:int(enum)或string,估计定义的是oneof.

下面是atc转出来的一段map<string,AttrDef>的pair二进制表示的解读,

52 // 10:LEN,表示标签10,是个pair, 
0e //当前map的pair对长度 14 bytes
0a //1:LEN key是tag=1,长度类型  
02 00 01 //key的长度为2
12 // 2:LEN, value tag=2,类型是LEN
08 //长度是8,后面8Byte表示一个value实体,下面是oneof
0a //1:LEN, 1 tag表示listValue
06 //ListValue长度是6
2a // 5:LEN, 5tag表示list of Bool
01 // 一个bool
00 // bool = false
a0 // 20:Variant, 20 tag表示val_tye
01 04 // 04表示VT_LIST_BOOL, 为什么前面还有一个1呢?应该是packed repeated bool

posted @ 2024-05-26 16:16  zwlwf  阅读(24)  评论(0编辑  收藏  举报