AMD开源XDNA架构的神经处理单元(NPU)驱动程序,提升机器学习和信号处理性能
AMD刚刚在高性能计算领域迈出了重要的一步,开源了其基于XDNA架构的神经处理单元(NPU)的驱动程序。这意味着开发人员现在可以 unprecedented 访问这些强大加速器的内部工作方式,为更快的机器学习(ML)和信号处理应用铺平了道路。
NPUs是专用处理器,设计用于处理与ML和信号处理任务相关的计算密集型工作负载。与传统的CPU不同,后者擅长处理多样化的任务,NPUs擅长执行像矩阵乘法和卷积这样的特定操作,这对于图像和语音识别、自然语言处理和科学计算等任务至关重要。
AMD Ryzen Pro (图片来自: AMD)
现在,这就是AMD的XDNA架构发挥作用的地方。它是AMD Ryzen处理器的7040和8040系列、Alveo V70加速器和Versal SoCs中的NPUs的基础技术。通过开源这些NPUs的驱动程序,AMD实质上为开发人员提供了用于其计算需求的权力,包括Linux。
开源的几个好处。
- 开发人员现在可以审查驱动程序代码,了解NPUs的运行方式,甚至进行修改以满足其特定需求。
- 开源驱动程序消除了先前由于有限访问或专有限制而犹豫不决的开发人员的潜在进入障碍。这种更广泛的可访问性可以推动AMD的NPUs在各个行业和应用中的更广泛采用。
- 通过直接访问驱动程序代码,开发人员可以为特定工作负载进行微调,充分挤出每一点性能,并将其量身定制到他们独特的需求上。
开源的代码包括两个关键组件:
- Linux内核驱动程序(amdxdna.ko):这个低级驱动程序直接与XDNA硬件交互,实现操作系统与NPU之间的通信和控制。
- XRT运行时库(插件“xrt_plugin-amdxdna”):这个库提供了一个接口,让应用程序使用Xilinx运行时库(XRT)与NPUs进行交互。XRT提供各种抽象级别,从低级的C/C++ API到高级的Python绑定和与流行的ML框架(如TensorFlow、PyTorch和Caffe)的集成。这种灵活性适用于具有不同编程背景和技能的开发人员。
- 需要注意的是,开源驱动程序需要支持IOMMU SVA(Shared Virtual Addressing)的Linux 6.7内核。这确保了CPU和NPU之间的有效内存管理和资源共享。
关于如何在Ubuntu 22.04中正确编译Linux 6.7主线内核以使用此驱动程序的详细指南,您可以参考GitHub仓库中的构建和使用说明。