CANN/ops-blas Ctrmv算子实现
2026/5/9 18:33:32 网站建设 项目流程

Ctrmv算子实现

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

概述

BLAS Ctrmv算子实现。

Ctrmv(复数三角矩阵-向量乘法)算子实现了复数三角矩阵与向量的乘法运算,是BLAS基础线性代数库中的Level 2算子之一。

该算子计算 x = op(A) * x,其中A为复数三角矩阵,x为复数向量,op(A)由trans参数决定。

支持的产品

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品

目录结构介绍

├── ctrmv │ ├── CMakeLists.txt // 编译工程文件 │ ├── README.md // 说明文档 │ └── ctrmv_test.cpp // 算子调用样例

算子描述

  • 算子功能:
    Ctrmv算子实现了复数三角矩阵与向量的乘法。对应的数学表达式为:
x = op(A) * x

其中:

  • op(A) = A,当 trans = N
  • op(A) = A^T,当 trans = T
  • op(A) = A^H,当 trans = C(共轭转置)
  • A为n×n的复数三角矩阵(上三角或下三角)
  • x为长度为n的复数向量

复数乘法公式:(a + bi) * (c + di) = (ac - bd) + (ad + bc)i

对应的接口为:

int aclblasCtrmv(aclblasHandle handle, aclblasFillMode_t uplo, aclblasOperation_t trans, aclblasDiagType_t diag, int64_t n, const float *A, int64_t lda, float *x, int64_t incx);
参数ctrmv 参数说明
参数列表Param.Memoryin/out含义
handleinBLAS句柄,用于传入stream。
uploin指定矩阵A的上三角或下三角部分。ACLBLAS_UPPER或ACLBLAS_LOWER。
transin指定对矩阵A的操作类型。ACLBLAS_OP_N(不转置)、ACLBLAS_OP_T(转置)、ACLBLAS_OP_C(共轭转置)。
diagin指定对角线元素是否为单位元。ACLBLAS_UNIT(单位对角线)或ACLBLAS_NON_UNIT(非单位对角线)。
nin矩阵A的阶数,即向量的长度。
Adeviceinn×lda的复数矩阵,存储为2×n×lda个float。
ldain矩阵A的主维度。
xdevicein/out复数向量,长度为n,存储为2×n×incx个float。既是输入也是输出。
  • 算子规格:

    算子类型(OpType)Ctrmv
    算子输入nameshapedata typeformat
    An × ncomplex<float>ND
    算子输出xncomplex<float>ND
    核函数名ctrmv_kernel
  • 算子实现:

    将输入数据从A和x的GM地址分块搬运到UB,进行复数三角矩阵-向量乘法计算后再将结果从workspace回写到x所在的GM地址。支持上三角和下三角模式,支持不转置、转置和共轭转置操作。

  • 调用实现
    使用内核调用符<<<>>>调用核函数。

约束说明

  • n的取值范围为[1, 8192]
  • 仅支持complex<float>数据类型
  • incx > 0
  • lda > 0

编译运行

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

  • 配置环境变量
    请根据当前环境上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=ctrmv --run # --ops=<算子名> --run可选参数,执行测试样例

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

    [Success] Case accuracy is verification passed.

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询