ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

为什么密码计算要搬上 NPU?CANN Crypto 破解 CPU 瓶颈的 3 大场景

为什么密码计算要搬上 NPU?CANN Crypto 破解 CPU 瓶颈的 3 大场景 为什么密码计算要搬上 NPUCANN Crypto 破解 CPU 瓶颈的 3 大场景【免费下载链接】cryptocrypto SIG 是密码学兴趣小组围绕昇腾 NPU 打造高性能密码软件库提供丰富的密码算子与算法实现项目地址: https://gitcode.com/cann/cryptoCANN Crypto 是面向昇腾 NPU 的高性能密码学算子库它把国密与国际主流加密算法搬上 NPU解决 CPU 在批量密码计算中的三大瓶颈。适合 AI 开发者与密码计算初学者快速上手。在日常开发中加密、哈希、签名这些安全操作几乎都跑在 CPU 上。但当数据规模变大——比如几 GB 的模型参数、百万条批量数据、或后量子密码的大矩阵运算——CPU 很快就会成为整条流水线的最短板。CANN Crypto 给出的答案是让密码计算与 AI 计算共用同一块 NPU 算力。它按数学引擎 → 密码原语 → 算法服务三层组织代码Device Kernel 使用 Ascend C 实现覆盖国密算法SM2、SM3、SM4、SM9、ZUC与国际主流算法AES、SHA-2/3、ChaCha20、X25519、Ed25519以及后量子密码 ML-KEM、ML-DSA。 先搞清楚CPU 在密码计算上的 3 个瓶颈瓶颈具体表现 带宽瓶颈NPU 上的数据要先拷回主机内存才能加密PCIe 传输成为主要耗时 算力瓶颈后量子密码的数乘、NTT数论变换等大矩阵运算CPU 单线程/多线程都吃不消 吞吐瓶颈海量小消息批量加密时CPU 的单流处理能力成为天花板CANN Crypto 正是针对这三点设计的下面 3 个场景逐一拆解。 场景一NPU 驻留数据就地加密免回主机长尾关键词昇腾 NPU 设备内存加密、数据不出卡这是 CANN Crypto 最核心的设计目标之一。典型场景大模型推理时中间特征、KV Cache 就驻留在 NPU 显存中。传统做法是拷回 CPU → 加密 → 再拷回一次往返可能比计算本身还慢。现在数据无需离开设备直接由 NPU 上的密码算子就地完成保护省掉整条 PCIe 搬运链路。官方 README 对这一点的描述很直白「让已位于 NPU 上的数据不必回到主机即可被保护」可查阅 README.md。 对新手的一句话理解数据在哪加密就在哪搬运成本直接归零。 场景二后量子密码 NTT / RNS 重计算CPU 根本扛不住长尾关键词后量子密码 NPU 加速、ML-KEM ML-DSA NTTML-KEM密钥封装和 ML-DSA数字签名的核心运算是有限域上的大矩阵乘法与 NTT数论变换。这类运算的特点是计算密度极高、访存模式规整——正好是 NPU 向量/Cube 单元的舒适区而 CPU 用纯标量或普通 SIMD 实现时吞吐差距明显。CANN Crypto 把这部分能力放在数学引擎层 src/math/大数与模运算Montgomery、BarrettNTT / INTT / RNSsrc/math/ntt/ 提供多种变体DirectBat4、FourStepBat4、KemBat2、DsaBat3分别适配 KEM 与 DSA 不同场景接口定义见 ntt_internal.hGF(2^k) 与位平面转置分层上algorithms/与primitives/不自己实现数学运算需要时统一下沉到math/保证 NTT 这类重计算只有一套高性能实现、被多个算法族复用。 场景三海量批量加密吞吐拉满长尾关键词批量数据批量加密、AES-GCM 批量吞吐对百万条消息逐条加密时CPU 的单流处理能力成为天花板而 NPU 的并行单元天然适合一次处理一批。AES-128-CTR / AES-128-GCM以 Ascend C 实现的 NPU 算子通过 PyTorch 扩展直接调用示例脚本见 aes128_gcm_example.py组件说明见 AES/README.mdSHA-3 家族Shake128 / Shake256 变长哈希算子接口文档见 aclnnShakeTensor.mdKeccak-f[1600]SHA-3 的底层置换独立原语实现见 src/primitives/keccak/值得注意的是项目专门维护了基准测试目录 benchmarks/要求对batch 规模1 / 64 / 1K / 64K× 消息长度 × 每条分发路径做完整扫描——官方还特别提示短消息与长消息的结论往往相反这说明批量场景下的性能结论必须实测而不是拍脑袋。 三层架构能力如何被复用CANN Crypto 的目录结构本身就在讲这个故事依赖方向只能向下crypto/ ├── include/cann_crypto/ # 对外稳定 C ABI唯一承诺兼容性的接口边界 ├── src/ │ ├── core/ # 运行时handle / stream / workspace / 密钥管理 │ ├── math/ # 数学引擎NTT/RNS、大数模运算、GF(2^k) │ ├── primitives/ # 密码原语AES、SM4、Keccak-f、ChaCha、GHASH、EC │ └── algorithms/ # 算法服务digest / aead / mac / kdf / signature / kem ├── reference/ # 纯 C 参考实现零 CANN 依赖用作正确性基准 └── benchmarks/ # 基准测试对外接口边界include/cann_crypto/密码原语约束primitives/README.md算法服务组织方式algorithms/README.md纯 C 参考实现差分测试基准reference/对新手来说记住一句话就够了algorithms/只做组合与调度primitives/不实现数学运算数学一律找math/——这就是 NPU 上一次实现、处处复用的关键。 快速上手三步跑起来1️⃣ 准备环境安装 NPU 驱动与 CANN 包部分组件依赖 torch 与 torch_npu具体以各组件requirements.txt为准也可以直接使用社区 CANNLab 在线环境。2️⃣ 下载源码git clone https://gitcode.com/cann/crypto3️⃣ 编译与验证仓库根目录的build.sh是统一入口bash build.sh --pkg # 编译全部组件 bash build.sh --componentsprimitives/AES --pkg # 只编译 AES 组件 bash build.sh -u --ophost # 跑 op_host 层单元测试无需昇腾设备 bash build.sh -u --opkernel # 跑 op_kernel 层测试需要昇腾设备⚠️ 版本提示源码跟随 CANN 版本发布建议选择配套的 CANN 版本与 GitCode 标签master分支可能存在版本不匹配风险。调用样例可直接运行 src/primitives/AES/examples/ 下的脚本它们会自动对照已知答案验证结果——对新手来说这比读文档更快建立信心。 总结场景CPU 痛点CANN Crypto 的解法设备驻留数据保护PCIe 往返搬运慢数据不出卡NPU 就地加密后量子密码 NTT/RNS大矩阵运算算力不足数学引擎层统一提供 NPU 加速 NTT海量批量加密单流通吞有天花板NPU 并行单元 批量算子AES-GCM/CTR、Shake密码计算搬上 NPU不是为了新而新而是数据、算力、吞吐三个维度共同指向的必然选择。想深入了解接口与约束可以从 docs/ 和 CONTRIBUTING.md 入手。【免费下载链接】cryptocrypto SIG 是密码学兴趣小组围绕昇腾 NPU 打造高性能密码软件库提供丰富的密码算子与算法实现项目地址: https://gitcode.com/cann/crypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表