当前位置: 首页 > news >正文

如何快速入门UADK:5步搭建硬件加速开发环境

如何快速入门UADK:5步搭建硬件加速开发环境

【免费下载链接】uadk项目地址: https://gitcode.com/openeuler/uadk

前往项目官网免费下载:https://ar.openeuler.org/ar/

UADK(用户空间加速器开发套件)是openEuler社区推出的一个硬件加速开发框架,它为用户应用程序提供统一、安全、高效的方式来访问硬件加速器。无论您是刚接触硬件加速的新手,还是希望提升应用性能的开发者,这篇快速入门指南都将帮助您在5个简单步骤内完成UADK开发环境的搭建!🚀

📋 什么是UADK硬件加速开发框架?

UADK是一个完整的用户空间硬件加速开发套件,它基于Linux内核的UACCE(用户空间加速器框架)构建。通过UADK,开发者可以轻松利用华为鲲鹏等硬件平台的加速器资源,显著提升加密解密、数据压缩等计算密集型任务的性能。

UADK的核心组件包括:

  • libwd- 基础库,封装了对UACCE设备的基本操作
  • 算法库- 如libwd_comp(压缩/解压缩)、libwd_crypto(加密/解密)
  • 硬件驱动- 支持不同硬件加速器的驱动程序
  • 工具和测试套件- 帮助验证和优化性能

🛠️ 第1步:检查内核要求与配置

在开始之前,请确保您的Linux内核版本至少为v5.9,并且启用了SVA(共享虚拟寻址)功能。

内核配置示例(华为鲲鹏平台):

CONFIG_IOMMU_SVA_LIB=y CONFIG_ARM_SMMU=y CONFIG_ARM_SMMU_V3=y CONFIG_ARM_SMMU_V3_SVA=y CONFIG_PCI_PASID=y CONFIG_UACCE=y CONFIG_CRYPTO_DEV_HISI_SEC2=y CONFIG_CRYPTO_DEV_HISI_QM=y CONFIG_CRYPTO_DEV_HISI_ZIP=y CONFIG_CRYPTO_DEV_HISI_HPRE=y

这些配置确保内核支持UACCE框架和硬件加速器驱动。UACCE可以构建为模块或内置到内核中,具体取决于您的需求。

📦 第2步:获取UADK源代码

使用以下命令克隆UADK项目仓库:

git clone https://gitcode.com/openeuler/uadk cd uadk

项目的主要目录结构如下:

  • include/- 用户应用程序和硬件驱动的头文件
  • docs/- 设计文档和说明文档
  • test/- 测试应用程序
  • sample/- 示例代码
  • drv/- 硬件驱动程序
  • v1/- UADK v1版本相关代码

UADK架构设计图展示了用户空间应用如何通过libwd和算法库访问硬件加速器

🔧 第3步:编译安装UADK

在本地环境中构建UADK非常简单:

# 清理之前的构建文件 ./cleanup.sh # 生成配置脚本 ./autogen.sh # 配置构建选项 ./conf.sh # 编译项目 make # 安装到系统 sudo make install

默认情况下,UADK配置为动态链接库。安装完成后,动态库和静态库将安装在/usr/local/lib目录,头文件将安装在/usr/local/include/uadk目录。

重要提示:如果您需要交叉编译(如为ARM平台编译),请参考INSTALL文件中的详细说明,其中包含了构建NUMA、OpenSSL和zlib等依赖库的完整步骤。

🔑 第4步:配置设备权限

硬件加速器在UADK中注册后,会在/dev目录下创建字符设备节点。为了让用户应用程序能够访问硬件加速器资源,需要设置适当的权限:

# 设置硬件加速器设备节点的写权限 sudo chmod 777 /dev/hisi_hpre-* sudo chmod 777 /dev/hisi_sec-* sudo chmod 777 /dev/hisi_zip-*

这一步确保您的应用程序有权限访问硬件加速器设备,这是使用UADK进行硬件加速开发的关键环节。

UADK异步操作流程图展示了应用程序如何通过轮询机制高效利用硬件加速器

🧪 第5步:运行测试验证环境

现在可以运行测试程序来验证UADK环境是否正常工作:

ZIP硬件加速器测试:

# 同步模式测试 zip_sva_perf -b 8192000 -l 1000 -v -m 0 # 异步模式测试 zip_sva_perf -b 8192000 -l 1000 -v -m 1

SEC硬件加速器测试:

# 同步加密测试 test_hisi_sec --cipher 0 --optype 0 --pktlen 16 --keylen 16 --times 1 --sync --multi 1 # 异步加密测试 test_hisi_sec --cipher 0 --optype 0 --pktlen 16 --keylen 16 --times 1 --async --multi 1

HPRE硬件加速器测试:

# 同步模式测试 test_hisi_hpre --trd_mode=sync # 异步模式测试 test_hisi_hpre --trd_mode=async

这些测试程序位于test/目录,它们展示了如何使用UADK的不同功能模块。

🚀 开始您的第一个UADK项目

环境搭建完成后,您可以参考以下资源开始开发:

核心API文档:

  • 基础库API:wd.c
  • 加密算法库:wd_cipher.c
  • 压缩算法库:wd_comp.c
  • 非对称加密:wd_rsa.c

设计文档:

  • 详细架构设计:docs/wd_design.md
  • 维护指南:docs/maintenance.md

示例代码:查看sample/目录中的示例程序,了解如何在实际应用中使用UADK的API。

💡 实用技巧与最佳实践

  1. 选择合适的硬件加速器- 根据您的应用需求选择对应的加速器(ZIP用于压缩、SEC用于加密、HPRE用于非对称加密)

  2. 同步与异步模式选择- 对于高吞吐量应用,建议使用异步模式;对于低延迟应用,同步模式可能更合适

  3. 内存池管理- UADK提供了高效的内存管理机制,合理使用可以显著提升性能

  4. 错误处理- 所有UADK API都返回状态码,确保在应用中正确处理错误情况

🔍 常见问题排查

Q: 编译时出现依赖库错误?A: 确保已安装所有必需的依赖库,或参考INSTALL文件中的交叉编译部分。

Q: 测试程序无法访问设备?A: 检查第4步中的设备权限设置是否正确,并确认内核模块已正确加载。

Q: 性能不如预期?A: 查看wd_design.md中的性能优化建议,特别是关于异步操作和内存池配置的部分。

📈 下一步学习路径

掌握了UADK基础环境搭建后,您可以:

  1. 深入学习API使用- 研究include/目录中的头文件定义
  2. 分析测试代码- 查看test/目录中的完整测试用例
  3. 探索高级特性- 学习调度器配置和内存池优化
  4. 贡献代码- 参与openEuler社区,为UADK项目贡献力量

通过这5个步骤,您已经成功搭建了UADK硬件加速开发环境!🎉 现在可以开始利用硬件加速器来提升您的应用程序性能了。记住,UADK的强大之处在于它为用户空间应用提供了统一的硬件加速接口,让您可以专注于业务逻辑,而无需深入了解底层硬件细节。

开始您的硬件加速开发之旅吧!如果您在开发过程中遇到问题,可以参考项目文档或向openEuler社区寻求帮助。祝您开发顺利!✨

【免费下载链接】uadk项目地址: https://gitcode.com/openeuler/uadk

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/3119078.html

相关文章:

  • Si4731与PIC32MX675F512L构建数字收音系统全解析
  • openeuler/guest-components:构建安全容器的终极工具集,你需要知道的一切
  • 工地久站闷脚选哪款?2541BRN 防泼水透气牛皮绝缘安全鞋
  • Java super 关键字
  • STM32F756ZG与MC74HC165A实现高效多路输入扩展方案
  • kiran-log完全解析:基于zlog的Qt5与GTK3日志封装库入门指南
  • Unity MyFramework:框架内资源管理和 YooAsset 有什么区别
  • DVWA从入门到精通(三):Command Injection(命令注入)
  • WorkshopDL终极指南:无需Steam账号免费下载创意工坊模组
  • LLM开发者生存图谱:大模型工程化落地的四层架构与成本可控实践
  • Navicat Mac版无限试用终极指南:三种简单方法免费使用Navicat Premium
  • 3个妙招解决Quark-Auto-Save转存失败:从空间不足到自动化管理的完整指南
  • BLDC电机FOC控制:A89307驱动芯片与PIC32MX795F512L方案详解
  • STM32与TB9051FTG实现静音直流电机控制方案
  • 5种ExplorerPatcher安装失败的深度解析与专业修复方法
  • ICM-42688-P高精度IMU与STM32的工业运动感知实践
  • 计算机毕业设计之 基于大语言模型的课程答疑系统的设计与实现
  • API-First无头CMS构建指南:从原理到实践
  • 如何通过在线旅游营销课程实现传统旅行社转型?
  • 告别网盘下载限制:浏览器脚本解锁九大云盘直链下载新体验
  • 基于Qt的NodeEditor节点编辑器开发指南
  • 4-20mA电流环原理与STM32工业信号采集实战
  • 锂电牵引辊需具备哪些核心性能?靠谱生产厂家怎么选?
  • 终极方案:Scroll Reverser专业解决macOS多设备滚动冲突
  • 实时 3D 场景重建新突破:LingBot-Map 前馈式模型,万帧视频秒变点云
  • 远程协助软件哪个好 手机怎么远程办公
  • Steam创意工坊跨平台下载技术解析:WorkshopDL分布式下载引擎架构实现
  • Fast-GitHub技术深度解析:浏览器扩展加速GitHub访问的技术实现
  • 实战指南:OpenSpeedy游戏加速引擎的完全使用方案
  • AI Agent安全攻防体系:OWASP、沙箱化与权限治理的工程落地