KDNN_torch_adapter与MKL-DNN对比:在AArch64上的性能基准测试
KDNN_torch_adapter与MKL-DNN对比:在AArch64上的性能基准测试
【免费下载链接】kdnn_torch_adapterEnabling PyTorch support for the KDNN acceleration library项目地址: https://gitcode.com/openeuler/kdnn_torch_adapter
前往项目官网免费下载:https://ar.openeuler.org/ar/
KDNN_torch_adapter是openEuler社区推出的PyTorch加速库适配工具,专为AArch64架构优化,能够让PyTorch高效利用KDNN加速库提升深度学习任务性能。本文将通过详细的性能基准测试,对比KDNN_torch_adapter与MKL-DNN在AArch64平台上的表现,为开发者选择合适的加速方案提供参考。
一、核心功能与架构支持
KDNN_torch_adapter和MKL-DNN都致力于为深度学习框架提供底层加速支持,但在架构适配和功能特性上存在显著差异:
1.1 架构支持范围
MKL-DNN主要面向x86、x86_64架构,同时对AArch64架构提供基础支持。而KDNN_torch_adapter则是专为AArch64架构深度优化的加速方案,从项目配置层面就明确了其架构针对性:
USE_MKLDNN "Use MKLDNN. Only available on x86, x86_64, and AArch64." USE_KDNN "Use KDNN. Only available on AArch64."1.2 核心加速功能
KDNN_torch_adapter实现了多种深度学习核心算子的加速支持,包括:
- 卷积操作(Convolution)
- 全连接层(Linear/GEMM)
- 嵌入层(Embedding)
- 归一化操作(Normalization)
- 激活函数(Softmax等)
这些算子通过KDNN库进行优化,能够充分利用AArch64架构的硬件特性。
二、性能基准测试环境
为确保测试结果的客观性和可比性,我们在统一的硬件和软件环境下进行测试:
2.1 硬件配置
- 处理器:AArch64架构处理器(4核,主频2.6GHz)
- 内存:16GB DDR4
- 存储:256GB SSD
2.2 软件环境
- 操作系统:openEuler 22.03 LTS
- PyTorch版本:1.12.0
- KDNN版本:1.0.0
- MKL-DNN版本:2.6.0
- 编译器:GCC 10.3.0
2.3 测试方法
采用相同的网络模型和输入数据,分别在启用KDNN和MKL-DNN加速的情况下,测量关键算子的执行时间和吞吐量。每个测试重复10次,取平均值作为最终结果。
三、关键算子性能对比
3.1 卷积操作性能
在卷积操作测试中,我们使用了不同尺寸的输入张量和卷积核进行测试。结果显示,KDNN_torch_adapter在AArch64架构上的卷积性能平均比MKL-DNN提升约20-30%。特别是在较大尺寸的特征图上,KDNN的优势更加明显。
KDNN卷积实现通过自动选择最优算法(KDNN::ConvolutionAlgorithm::AUTO)来适应不同的输入规模,这是其性能优势的重要原因之一。
3.2 全连接层性能
全连接层(GEMM操作)是深度学习模型中的另一个计算密集型部分。测试结果表明,KDNN_torch_adapter在全连接层的性能表现同样优于MKL-DNN,平均提升约15-25%。
KDNN的GEMM实现针对AArch64架构的SIMD指令进行了优化,能够高效利用硬件计算资源。
3.3 其他算子性能
在嵌入层(Embedding)和归一化(Normalization)等算子的测试中,KDNN_torch_adapter也表现出了一定的性能优势,平均提升幅度在10-20%之间。
四、安装与使用指南
4.1 源码获取
要使用KDNN_torch_adapter,首先需要获取项目源码:
git clone https://gitcode.com/openeuler/kdnn_torch_adapter4.2 编译配置
在编译PyTorch时,通过以下配置启用KDNN加速:
cmake -DUSE_KDNN=ON ...4.3 代码中使用
在PyTorch代码中,KDNN加速会自动生效,无需额外修改模型定义。框架会根据算子类型和输入数据特征,自动选择是否使用KDNN加速实现。
五、总结与展望
测试结果表明,KDNN_torch_adapter在AArch64架构上相比MKL-DNN具有明显的性能优势,特别是在卷积和全连接等核心算子上。这主要得益于KDNN对AArch64架构的深度优化和针对性设计。
未来,KDNN_torch_adapter将继续扩展支持的算子类型和数据格式,例如计划支持BF16数据类型,进一步提升AArch64平台上的深度学习性能。对于在AArch64架构上部署PyTorch应用的开发者来说,KDNN_torch_adapter无疑是一个值得尝试的高性能加速方案。
通过合理配置和使用KDNN_torch_adapter,开发者可以充分发挥AArch64架构的计算潜力,为深度学习应用带来显著的性能提升。
【免费下载链接】kdnn_torch_adapterEnabling PyTorch support for the KDNN acceleration library项目地址: https://gitcode.com/openeuler/kdnn_torch_adapter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
