Strsv算子实现【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas概述BLAS Strsv算子实现。Strsv(Triangular packed matrix-vector solve)算子实现了三角矩阵求解运算是BLAS基础线性代数库中的核心算子之一。该算子针对三角矩阵的存储特性进行了优化通过求解三角线性方程组 Ax b 来计算向量x。支持的产品Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品目录结构介绍├── strsv │ ├── CMakeLists.txt // 编译工程文件 │ ├── README.md // 说明文档 │ └── strsv_test.cpp // 算子调用样例算子描述算子功能 strsv算子实现了求解三角矩阵方程Axb。对应的数学表达式为A * x bA为上三角或下三角矩阵x是待求解的向量。根据uplo参数矩阵A的上三角或下三角部分被使用其他部分被忽略。对角线元素根据diag参数决定是否为单位对角角。对应的接口为int aclblasStrsv(aclblasHandle handle, aclblasFillMode uplo, aclblasOperation trans, aclblasDiagType diag, int64_t n, const float *A, int64_t lda, float *x, int64_t incx);参数strsv 参数说明参数列表Param.Memoryin/out含义handleinaclblas算子流句柄。uploin指定使用A的上三角还是下三角部分。transin指定是否对A进行转置操作。diagin指定A的对角线是否为单元对角线。nin矩阵A的维度。Adevicein矩阵A的数据指针维度为n x lda。ldain矩阵A的leading dimension。xdevicein/out输入向量b同时作为输出向量x。incxinx中连续元素之间的步长。算子规格算子类型(OpType)Strsv算子输入nameshapedata typeformatAN x ldafloatNDxNfloatND算子输出xNfloatND核函数名strsv_kernel_*算子实现将输入数据从A,x的GM地址分块搬运到UB进行计算后再搬出到x所在的GM地址。调用实现 使用内核调用符调用核函数。编译运行在本样例根目录下执行如下步骤编译并执行算子。配置环境变量 请根据当前环境上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 --opsstrsv --run # --ops算子名 --run可选参数执行测试样例执行结果如下说明精度对比成功。[Success] Case accuracy is verification passed.【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考