新闻详情

新闻详情

首页 / 资讯中心 / 详情

批量 SHAKE 哈希提速实战:CANN Crypto Shake128/256 算子调用教程

发布时间:2026/9/29 13:01:45来源:尧图网络
批量 SHAKE 哈希提速实战:CANN Crypto Shake128/256 算子调用教程
批量 SHAKE 哈希提速实战CANN Crypto Shake128/256 算子调用教程【免费下载链接】cryptocrypto SIG 是密码学兴趣小组围绕昇腾 NPU 打造高性能密码软件库提供丰富的密码算子与算法实现项目地址: https://gitcode.com/cann/cryptoCANN Crypto 是面向昇腾 NPU 的高性能密码软件库本文带你调用其中的Shake128Tensor / Shake256Tensor 算子在 NPU 上对批量等长消息执行 SHAKE128/SHAKE256 哈希计算一次提交成百上千条消息无需数据搬回主机即可在设备上完成吸收、填充与挤出全流程。为什么要在 NPU 上跑 SHAKE 哈希SHAKE 是 SHA-3 家族的可扩展输出函数XOF输入任意长度消息输出长度由调用方自由指定常用于密钥派生、随机数扩展等场景。传统做法是逐条消息在 CPU 上调用 OpenSSL存在两个痛点批量场景吞吐低上千条等长消息只能串行或依赖 CPU 多线程数据搬迁开销大NPU 上生成的中间数据需要落盘到主机才能做哈希。CANN Crypto 的 Shake 算子把这两步合并到设备端完成——输入[B, M]的批量消息张量直接得到[B, O]的批量结果张量B 条消息共享一次 kernel 调度。算子能力一览Shake128 与 Shake256 怎么选对比项Shake128TensorShake256Tensor算法SHAKE128SHAKE256rate吸收速率168 字节136 字节接口头文件aclnn_shake128_tensor.haclnn_shake256_tensor.h输入张量 x[B, M]UINT8连续行主序同左输出张量 y[B, O]UINT8O 由你指定同左两个算子共用同一个 SHAKE 算子工程接口形态完全一致只是内部调用的 Keccak 参数不同。详细说明见 src/algorithms/hash/shake/docs/aclnnShakeTensor.md。硬件与版本要求先确认你的环境调用前请确认硬件支持避免编译目标不匹配产品是否支持Atlas A3 训练 / 推理系列✅编译目标ascend910_93Atlas A2 训练 / 推理系列✅编译目标ascend910bAscend 950PR / 950DT❌Atlas 200I / 500 A2 推理❌设备验证基于CANN 9.1.0。完整产品矩阵见 src/algorithms/hash/shake/README.md。三步调用教程从查询工作空间到结果回读aclnn 接口都是两段式的记住这个套路即可复用到仓库里所有 aclnn 算子第 1 步查询工作空间。调用aclnnShake128TensorGetWorkspaceSize(x, y, workspaceSize, executor)传入输入张量 x 和预先创建好的输出张量y输出长度 O 由 y 的第二维指定无需额外属性接口返回所需设备工作空间大小并生成执行器 executor。第 2 步提交执行。调用aclnnShake128Tensor(workspace, workspaceSize, executor, stream)将计算提交到指定 ACL 流。此时返回成功只表示已提交计算仍在异步进行。第 3 步同步并回读。调用aclrtSynchronizeStream等待完成再用aclrtMemcpy把 y 从设备拷回主机读取哈希结果。函数原型与全部参数说明见 src/algorithms/hash/shake/docs/aclnnShake128Tensor.md 和 src/algorithms/hash/shake/docs/aclnnShake256Tensor.md。参数约束清单这些坑提前避开调用前对照检查可避免绝大多数运行时错误同一批次内所有消息必须等长输入长度 M 和输出长度 O 全批统一B 0、M ≥ 0允许空消息、O 0不支持零长度输出x、y 必须是连续的二维 UINT8 张量缓冲区不重叠不支持原地计算输入、输出元素总数不超过INT64_MAX并受设备内存限制执行完成前流同步之前不要释放张量与工作空间。任何接口返回非零时用aclGetRecentErrMsg()结合 CANN 日志定位问题。批量调度内幕NPU 是如何加速的性能关键藏在 Tiling 调度里。Host 侧的 src/algorithms/hash/shake/op_host/shake_tiling.h 会根据 batch 大小和 AI Core 数量自动把 B 条消息切分成若干工作组每组 64208 条按 16 条的微块对齐每个 AI Core 领取若干组核心侧再用向量化指令批量处理 Keccak-f[1600] 状态。这意味着batch 越大单条消息的摊薄成本越低。等长批量消息正是这个算子的设计甜区向量化的状态吸收与挤出见 src/algorithms/hash/shake/op_kernel/shake_uniform_u32_tensor.h可以把 NPU 向量单元打满。快速上手运行官方示例仓库自带一份同时支持 SHAKE128/SHAKE256 的完整示例 src/algorithms/hash/shake/examples/test_aclnn_shake_tensor.cpp它演示了从 ACL 初始化、张量创建到结果校验的全过程辅助类 acl_example.h 负责设备缓冲区和张量的资源管理。构建算子包后在 SHAKE 算子目录配置环境即可运行# 设备 0 上跑 SHAKE128 ./build/cann-9.1.0-a3-sdk/examples/example_shake_tensor 0 128 # 设备 0 上跑 SHAKE256 ./build/cann-9.1.0-a3-sdk/examples/example_shake_tensor 0 256输出SHAKE128 example: PASS即表示示例中两条空消息的 32 字节结果与标准测试向量一致。正确性验证三层测试体系对正确性要求高的场景可以跑仓库内置的测试来交叉验证单元测试src/algorithms/hash/shake/tests/README.md 说明了 Host 设计模型与hashlib比较 234 个用例、纯 C 参考与hashlib比较 252 个用例参考结果由 src/algorithms/hash/shake/tests/assets/golden.py 独立生成设备正确性src/algorithms/hash/shake/tests/st/test_aclnn_sha3.cpp 含 36 个 SHAKE 用例用 OpenSSL EVP 作为独立参考逐字节比对覆盖空消息、rate 前后边界、多块吸收等边界压力测试python3 tests/stress.py --build-dir build/cann-9.1.0-a2-sdk --device 0 --runs 100可反复拉起独立进程压测任一失败即停止。写在最后CANN Crypto 的 Shake 算子让批量 SHAKE 哈希从 CPU 串行循环变成一次 NPU 提交等长消息打包成[B, M]张量指定输出长度 O两步接口调用即可。配合 Atlas A2/A3 硬件和 CANN 9.1.0你可以把密钥派生、随机扩展等高频哈希任务整体下沉到设备侧。更多密码原语Keccak、AES 等与算子的调用方式可继续参考 src/primitives/keccak/docs/aclnnKeccakF1600Tensor.md。【免费下载链接】cryptocrypto SIG 是密码学兴趣小组围绕昇腾 NPU 打造高性能密码软件库提供丰富的密码算子与算法实现项目地址: https://gitcode.com/cann/crypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

用Trae和AGENTS.md搭建自我维护的知识库:无需代码的AI IDE实践 2026/9/29 13:50:43

用Trae和AGENTS.md搭建自我维护的知识库:无需代码的AI IDE实践

1. 为什么我决定用 Trae 搭一个“会自我维护”的知识库先说结论:这个知识库的核心不是“存东西”,而是“自己管自己”。我平时写技术笔记、项目复盘、踩坑记录,散落在各种 Markdown 文件、聊天记录和临时文档里。时间一长,找东西全…

阅读更多 →
环境监测项目以太网温湿度变送器双协议批量配置方案 2026/9/29 13:50:30

环境监测项目以太网温湿度变送器双协议批量配置方案

做环境监测项目这些年,我体会最深的一件事是:设备精度再高,如果几百台设备配不过来,项目一样会砸在交付环节。手头这套“大规模环境监测项目:以太网温湿度变送器双协议批量配置方案”,就是典型的“活着的时…

阅读更多 →
UE5动作游戏Demo开发:从实机预告拆解到第三人称战斗实现 2026/9/29 13:50:30

UE5动作游戏Demo开发:从实机预告拆解到第三人称战斗实现

最近网上有一段“观看黑神话钟馗风格动作游戏实机预告”的 Reaction 视频热度不低。很多观众在弹幕和评论区里看的是“Boss 帅不帅”“打斗爽不爽”,但如果你是一名游戏开发方向的学习者,我更建议用第二种方式打开这类视频——把 15 分钟实机演示当成一份…

阅读更多 →
生产级 RAG 检索调优:BM25 + 向量混合检索与 Cross-Encoder 重排序 (Rerank) 2026/9/29 13:50:23

生产级 RAG 检索调优:BM25 + 向量混合检索与 Cross-Encoder 重排序 (Rerank)

在生成式 AI (RAG) 系统落地生产环境的过程中,绝大多数团队遇到的第一个性能瓶颈,就是检索召回率(Recall)与精确度(Precision)的矛盾。 如果仅依赖密集向量检索(Dense Retrieval,如…

阅读更多 →
文件系统静态结构详解:ext4磁盘布局、inode与VFS内核对象全解析 2026/9/29 13:50:23

文件系统静态结构详解:ext4磁盘布局、inode与VFS内核对象全解析

文件系统的静态结构这个说法,第一次听会以为是教科书目录里的一行字,真到现场排查问题的时候,它反而是最先要拿起来的东西。磁盘上到底写了什么、内核里挂了哪些对象、一个路径在还没被打开之前长什么样,这些都属于静态结构要回答…

阅读更多 →
MIPI LP RX深度解析:从物理层校准到CSI-2协议调试 2026/9/29 13:50:09

MIPI LP RX深度解析:从物理层校准到CSI-2协议调试

1. 项目概述:MIPI LP RX不是“低功耗接收器”的简单缩写,而是嵌入式视觉系统里一个关键信号链节点你搜“MIPI LP RX”,页面跳出一堆碎片信息:mipi c-phy s参数、st7701s mipi、mipi屏调试没信号、fpga实现mipi、rk3588 mipi输入10…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉