常见问题

1. 找不到/dev/sgX或/dev/mmcblk1

如果使用的神经网络计算卡是eMMC接口的,请下载并烧写专用固件,或编译并使用AI资料U盘中的内核。

如果使用的神经网络计算卡是USB接口的请确认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). 外置模块 使用命令:

    firefly@firefly:~$ sudo modinfo sg
    

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

    firefly@firefly:~$ sudo modprobe sg
    

如果驱动不存在则需要自行编译并加载sg.ko模块。

2. /dev/sgX或/dev/mmcblk1权限问题

如果使用的是eMMC接口的模块请在root用户下运行程序。

如果使用的是usb接口的模块,可在GTISDK目录下尝试以下操作:

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

或者尝试以下操作:

firefly@firefly:~$ sudo chmod 777 /dev/sg*

3. 出现-lGTILibrary Not found错误

可设置LD_LIBRARY_PATH变量指向GTILibrary所在的目录,例如:

firefly@firefly:~$ export LD_LIBRARY_PATH=/home/firefly/GTISDK/Lib/Linux/aarch64:$LD_LIBRARY_PATH

4. GTI初始化失败

查看userinput.txt(在SDK的data/Models/gti2801/gnet2_3/cnn_3目录下)中的节点名字(usb接口模块节点名为/dev/sg*, eMMC接口模块节点名为/dev/mmcblk1)跟开发板生成的节点名字是否一致,在Tools目录下有测试程序,可以自动检测判断节点和测试连通性.

5. GTI芯片读写失败

  1. 查看 userinput.txt 中的 max_sectors (“USB write block numbers”: 2048) 这个参数的大小, usb2.0接口或eMMC接口设置为128,usb3.0接口设置位2048;或者修改max_sectors修改为userinput.txt 大小,参考如下:

    ubunut16.04:~$ find /sys/devices/ -name max_sectors
    /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host6/target6:0:0/6:0:0:0/max_sectors
    ubunut16.04:~$ su
    ubunut16.04:~# echo 2048 > /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host6/target6:0:0/6:0:0:0/max_sectors
    
  2. 参考/dev/sgX或/dev/mmcblk1权限问题

6. TypeError: can’t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.

如果使用的是PyTorch 1.0rc1可修改PyTorch包中的tensor.py

def __array__(self, dtype=None):
    if dtype is None:
        return self.numpy()
    else:
        return self.numpy().astype(dtype, copy=False)

def __array__(self, dtype=None):
    if dtype is None:
        return self.cpu().numpy()
    else:
        return self.cpu().numpy().astype(dtype, copy=False)

tensor.py参考路径为/usr/lib/python3.7/site-packages/torch/tensor.py,请根据自己PyTorch的安装路径查找 tensor.py。

7. OSError: libftd3xx.so.0.5.21: cannot open shared object file: No such file or directory

在使用PLAI是出现如标题的错误请在PLAI根目录下执行以下命令:

ubunut16.04:~/PLAI$ export LD_LIBRARY_PATH=$(pwd)/lib/python/gtilib:$LD_LIBRARY_PATH

再运行PLAI。

8. Could not load model. Device:/dev/sg1—-usb_write error

如出现以下错误:

- 1541659252666 -140566399514112- 0-:usb_emmc_read ioctl error. code:-1
- 1541659252667 -140566399514112- 0-:Could not load model. Device:/dev/sg1----usb_write error

请查看/dev/sg*是否有读写权限,如果没有请参考[2],进行配置。 如果问题未解决,请参考[5],其中userinput.txt对应PLAI中的nets/netConfig*.txt, 请根据训练的模型进行修改。