托梅乌·维索 他最近一直致力于扩展Etnaviv开源图形驱动程序,以支持Vivante NPU IP, 与专有NPU驱动程序相比,性能具有竞争力和将聚四氟乙烯框架向上流到梅萨 处理神经处理单元Tomeu Vizoso现在已经将注意力转移到了为各种Rockchip SoC中的人工智能硬件开发开源、逆向工程的NPU驱动程序上。
随着Etnaviv/Vivante NPU开源驱动器的支持处于良好的状态,Tomeu的下一个挑战是为RK3588(S)和RK3568等SoC中的Rockchip NPU IP开发一个开源驱动器。
目前,官方的Rockchip驱动程序由一个GPL的树外内核驱动程序和一个闭源用户空间组成。Vizoso将当前的二进制驱动程序状态总结为:
RK3588中的NPU版本声称其3个核心的性能为6个TOP,尽管从我读到的内容来看,人们在使用关闭源代码驱动程序的并行使用多个核心时遇到了困难。
..。
内核驱动程序非常简单,并且在内部内核API的使用方面相对最新。用户空间堆栈是出了名的bug和难以使用,基本功能仍然没有实现,性能也远远低于硬件应该能够实现的水平。要明确的是,这是与闭源驱动程序相关的常见问题之上的。我的印象是,Rockchip的NPU团队真的人手不足。”
他的最终目标是为RockChip NPU开发一个支持主线的开源内核驱动程序和相关的用户空间。到目前为止,他有了一个良好的开端:
“我开始查看一个缓冲区,从专有驱动程序的调试日志中包含寄存器写入,当查看TRM中的寄存器描述时,我发现它必须紧密基于NVIDIA的NVDLA开源NPU IP。
有了RockChip对寄存器的(简洁)描述,以及NVDLA的文档和硬件和用户空间驱动程序的源代码,我能够比VeriSilicon的驱动程序(我没有任何文档)取得更快的进展。
现在,我正处于能够正确执行TensorFlow Lite的Conv2D和DepthwieConv2D操作的阶段,这些操作具有不同的输入尺寸、重量尺寸、步长和填充组合。下一步就是支持多个输出通道。
有关这个新的开源NPU Linux驱动冒险的更多信息, Tomeu Vizoso的博客.