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

CANN/ops-blas stpttr算子实现

stpttr算子实现

【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas

概述

BLAS stpttr算子实现。

stpttr(Symmetric Triangular matrix, Packed format To Triangular matrix, Regular storage)算子将 LAPACK 压缩格式(packed format)中的对称三角矩阵展开为按列主序存储的常规二维矩阵。仅写入uplo指定的三角区域,矩阵另一三角及未参与运算的元素保持原值不变。

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品×
Atlas A2 训练系列产品/Atlas A2 推理系列产品×

目录结构介绍

blas/tpttr/stpttr/ ├── README.md // 说明文档 └── arch35/ ├── stpttr_host.cpp // Host 侧实现 ├── stpttr_kernel.cpp // Kernel 侧实现 └── stpttr_tiling_data.h // Tiling 数据结构

测试代码位于test/tpttr/stpttr/

test/tpttr/stpttr/ ├── CMakeLists.txt // 编译工程文件 ├── stpttr_param.h // 参数结构体(继承 BlasTestParamBase) ├── stpttr_golden.h // CPU golden(签名与 BLAS API 一致) └── arch35/ ├── stpttr_npu_wrapper.h // NPU wrapper(封装 aclrtMalloc/H2D/kernel/D2H/free) ├── stpttr_test.cpp // 精度测试(GTest 入口) └── stpttr_test.csv // 精度测试用例表

算子描述

  • 算子功能:
    将压缩格式三角矩阵AP中的元素按uplo展开到常规矩阵A的对应三角区域:

    • uplo == ACLBLAS_LOWER:复制到A的下三角(含对角),上三角不变
    • uplo == ACLBLAS_UPPER:复制到A的上三角(含对角),下三角不变

    AP为列优先压缩存储,长度为n * (n + 1) / 2Alda × n的列主序矩阵,lda >= max(1, n)n == 0时直接返回成功,不访问缓冲区。

    对应的接口为:

aclblasStatus_t aclblasStpttr( aclblasHandle_t handle, aclblasFillMode_t uplo, int n, const float *AP, float *A, int lda);
参数stpttr 参数说明
参数列表Param.Memoryin/out含义
handleinaclbLAS 库上下文句柄。
uploin三角存储方式:ACLBLAS_UPPER(121)、ACLBLAS_LOWER(122)。
nin方阵维数,须 >= 0;为 0 时立即返回成功。
APdevicein压缩格式输入,<type> 数组,长度 n*(n+1)/2。
Adevicein/out常规输出矩阵,<type> 数组,维度 lda × n;非目标三角保持原值。
ldainA 的主维长度,须满足 lda >= max(1, n)。
  • 算子规格:

    算子类型(OpType)stpttr
    算子输入nameshapedata typeformat
    APn*(n+1)/2floatpacked
    算子输出Alda * nfloatND
    核函数名stpttr_kernel
  • 算子实现:

    Host 侧完成参数校验与 Tiling 计算(按 Vector Core 数切分列块),将 Tiling 数据拷贝至 Device 后,通过stpttr_kernel_do启动 Kernel。Kernel 按列从 GM 上的压缩缓冲区AP分块搬入 UB,再写回 GM 上常规矩阵A的对应三角列段;lda > n时列间存在 stride 间隔。

  • 调用实现
    使用内核调用符<<<>>>stpttr_kernel_do)在aclblas关联的 stream 上异步执行,Host 在返回前同步 stream。

测试用例覆盖

分组用例数覆盖场景
L0 参数校验4未初始化 handle、n<0、lda 过小、非法 uplo
L0 功能13n=0/1/2/4/32/128/512,LOWER/UPPER
L1 规模与 lda18n=8~1024、lda>n(8×12、16×32 等)
L1 特殊数值12全零、大数、负数、inf、nan、极值组合
L1 参数校验8AP/A 空指针、非法 uplo、n=0 与 lda 组合
L1 往返与大规模4strttp→stpttr 往返(32×32)、n=10240

ST 采用 GTest 参数化 +stpttr_test.csvBlasTest<StpttrParam>fixture,精度模式为EXACT(仅比对有效三角区,其余位置为 sentinel -999)。

注意makeBlasArray的 size 参数为int64_t,调用时需显式转换:makeBlasArray(static_cast<int64_t>(p.lda) * p.n, p.a),确保负值 n 正确返回空数组。

编译运行

在本样例根目录下执行如下步骤,编译并执行算子。

  • 配置环境变量
    请根据当前环境上CANN开发套件包的安装方式,选择对应配置环境变量的命令。

    • 默认路径,root用户安装CANN软件包

      source /usr/local/Ascend/cann/set_env.sh
    • 默认路径,非root用户安装CANN软件包

      source $HOME/Ascend/cann/set_env.sh
    • 指定路径install_path,安装CANN软件包

      source ${install_path}/cann/set_env.sh
  • 样例执行

    bash build.sh --ops=stpttr --soc=ascend950 --run

    其中--soc可选参数,用于指定目标硬件平台(与上文「产品支持情况」对应)。按实际硬件选用:

    产品--soc取值
    Ascend 950PR / Ascend 950DTascend950
    Atlas A3 训练系列产品 / Atlas A3 推理系列产品ascend910_93
    Atlas A2 训练系列产品 / Atlas A2 推理系列产品ascend910b

    执行结果如下,说明精度对比成功。

    [PASS] stpttr_test

【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas

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

http://www.zskr.cn/news/1442941.html

相关文章:

  • 如何3分钟快速掌握ChanlunX:通达信缠论自动化分析终极指南
  • 电磁冷热量计源头厂家推荐榜:2026年国产十大品牌综合实力深度解析 - 液体流量液位品牌推荐
  • TigerVNC终极实战指南:打造跨平台高效远程桌面环境
  • 如何永久保存微信聊天记录:三步搞定数据备份的完整指南
  • 零代码入门:用Arduino与电位器轻松控制智能LED灯带
  • 【初阶数据结构】 升沉有序的平仄 排序 3
  • JVM 语言互操作(Kotlin / Scala / Groovy)——要点、实践与迁移路线图!
  • 为什么你的Sora 2生成篮球扣篮总出现“关节反向弯曲”?:基于生物力学约束的3D姿态重投影校准法(附PyTorch可复现代码)
  • 嵌入式系统中的加解密签名(3)---国密的签名与验证
  • 企业内训效率提升300%?Sora 2批量生成培训视频的12个已验证生产参数,限内部技术白皮书流出
  • Java String 全面解析:从源码到常量池,再到面试高频题
  • 重新定义AI换脸工作流:ComfyUI Reactor Node的技术突破与应用革命
  • KMS智能激活工具:3分钟完成Windows和Office永久激活的完整指南
  • 牛客小白月赛133
  • 巧用 okbiye 论文优化工具:轻松攻克学术查重与 AI 内容筛查难题
  • 当小程序不只是“工具”:为什么畔游科技是企业“懂成长的伙伴”? - 新闻快传
  • 计算机二级备考资料合集:刷题、知识点与考前整理思路
  • 这款工具让图片悬浮在手机屏幕之上
  • 别再死磕论文飘红和 AI 检测!okbiye 多方案降重 + 降 AIGC,一键适配知网 / 维普 / Turnitin
  • Arduino蜂鸣器演奏生日快乐歌:从GPIO控制到乐谱编程实战
  • 2026年5月国内主流304不锈钢丝绳厂家综合实力排行 - 奔跑123
  • Umi-CUT:3步搞定图片批量去黑边与智能裁剪
  • 从武汉到蒙特哥贝:为何留学生与政企单位都认准圣擎航空? - 土星买买买
  • 2026 开封靠谱GEO优化公司豆包AI搜索排名推荐榜(综合实力TOP5) - 星际AI
  • OpencvSharp 算子学习教案之 - Cv2.ConnectedComponents 重载3
  • 2026年国内304不锈钢丝绳厂家实力大盘点 - 奔跑123
  • 格式改到崩溃?paperxie 论文智能排版,把你从 Word 地狱里捞出来
  • 汕头玩具厂老板发现:客户不再只从阿里巴巴找过来了 - 速递信息
  • java第一次博客作业:Java枚举类型
  • 2026 企业 AI 搜索优化服务商 TOP7 测评:从技术平台到本地落地怎么选 - 企业服务研究所