SDK

神经网络计算卡配置

从AI资料U盘下载并解压GTISDK到开发板。这里解压GTISDK到/home/firefly/GTISDK中,假设SDK压缩包在当前目录下,操作如下:

firefly@firefly:~$ tar zxvf GTISDK_Linux_aarch64_v3-1-2a.tar.gz -C ~/

然后进行驱动安装。

如果使用的神经网络计算卡是NCC S1,请在固件下载或AI资料U盘中下载并烧写对应的固件,或自行编译AI资料U盘中的内核;

如果使用的神经网络计算卡是USB Dongle模块请确认SCSI的sg.ko驱动模块存在,步骤如下:

  • 1). 内核内置确认modules.builtin中包含“kernel/drivers/scsi/sg.ko”,命令:

    firefly@firefly:~$ cat /lib/modules/$(uname -r)/modules.builtin | grep sg.ko
    

    如果打印”kernel/drivers/scsi/sg.ko“,则驱动存在请跳过2)。

  • 2). 外置模块 使用命令:

    firefly@firefly:~$ sudo modinfo sg
    

    如果打印“modinfo: ERROR: Module sg not found.”则驱动不存在,否则存在。 如果驱动存在请确保模块已被加载,可尝试以下操作加载驱动:

    firefly@firefly:~$ sudo modprobe sg
    

如果驱动不存在则需要自行编译并加载sg.ko模块(在内核中的选项为SCSI generic support)。

最后是安装udev配置文件。其操作如下:

firefly@firefly:~$ sudo cp -i GTISDK/Lib/Linux/aarch64/50-emmc.rules  /etc/udev/rules.d/
firefly@firefly:~$ sudo udevadm control --reload

编译工具

SDK需要g++ 7.2.1及以上版本,使用低于7.2.1版本的g++进行编译示例代码可能会产生意想不到的问题,如果开发板系统为Ubuntu可按下列步骤进行安装:

firefly@firefly:~$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
firefly@firefly:~$ sudo apt-get update
firefly@firefly:~$ sudo install g++-7

在编译示例代码前需要先设置环境变量GTI_CC,如下:

firefly@firefly:~$ export GTI_CC=g++-7

userinput.txt配置

{
    "Gti device type": 0,
    "model": [
        {
            "Network name": "Gnet3",
            "Image output format": 0,
            "Dump input image": 0,
            "eMMC write block numbers": 128,
            "eMMC read delay": 5000,
            "eMMC device node": "/dev/sg0",
        }
    ]
}

Gti device type

设置GTI芯片型号:0为GTI 2801,1为GTI 2803。

model

Network name

此配置与PLAI训练模型实现有关。

Image output format

芯片返回数据格式, 0: Conv out pooling, 1: Sub layers, 2: Conv out, 3: Major layers

Dump input image

默认为0。

eMMC write block numbers

设备的一次写或读数据的扇区数,设置为2048可获得最好的性能,设置为128可兼容usb 2.0设备,但此参数与/sys/devices/下对应设备节点的具体的max_sectors值有关。

eMMC read delay

设备写数据和读数据之间的延时时间,单位为us,通常与网络模型有关,GNet1为12000

eMMC device node

第一个可能的神经网络计算卡设备节点,连接设备后可在/dev/目录下查找,通常USB Dongle为/dev/sg0,NCC S1为/dev/mmcblk1。