PCIe CPU¶
对于不方便使用 TPU 加速的操作,需要 CPU 配合来完成。
如果是 SoC 模式,host端即为片上的ARM A53处理器,由它来完成CPU操作。
如果是 PCIe 模式,host端为用户的主机,CPU 操作可以选择在host端完成,也可以使用片上的ARM A53处理器来完成。两种实现方式各有优缺点:前者需要在device和host之间搬运输入输出数据,但运算性能可能优于ARM,所以用户可以根据自身host处理器性能、负载等实际情况选择最优的方式。默认情况下为前者,如果需要使用片上处理器可按照以下方式开启。
准备工作¶
如果要使能片上处理器,那么需要以下两个文件:
ramboot_rootfs.itb
fip.bin
需要将这两个文件所在的路径设置到程序运行的环境变量 BMCV_CPU_KERNEL_PATH 中, 如下:
$ export BMCV_CPU_KERNEL_PATH=/path/to/kernel_fils/
BMCV所有需要CPU操作的实现均在库 libbmcv_cpu_func.so 中,需要将该文件所在路径添加到程序运行的环境变量 BMCV_CPU_LIB_PATH 中,如下:
$ export BMCV_CPU_LIB_PATH=/path/to/lib/
目前需要CPU参与实现的API如下所示,如果没有使用以下API可忽略该功能。
num |
API |
---|---|
1 |
bmcv_image_draw_lines |
2 |
bmcv_image_erode |
3 |
bmcv_image_dilate |
4 |
bmcv_image_lkpyramid_execute |
5 |
bmcv_image_morph |
开启和关闭¶
用户可以在程序的开始结束处分别使用以下两个接口,即可分别实现该功能的开启和关闭。
bm_status_t bmcv_open_cpu_process(bm_handle_t handle); bm_status_t bmcv_close_cpu_process(bm_handle_t handle);
传入参数说明:
bm_handle_t handle
输入参数。 bm_handle 句柄。
返回值说明:
BM_SUCCESS: 成功
其他:失败