文件最后提交记录最后更新时间
refactor(blas): flatten directory structure and fix README files Co-authored-by: wuyi_huawei<wuyi36@hisilicon.com> # message auto-generated for no-merge-commit merge: !180 merge docs/issue-167-flatten-blas-structure into master refactor(blas): flatten directory structure and fix README files Created-by: zhanghua145 Commit-by: wuyi_huawei Merged-by: cann-robot Description: ## 描述 统一 blas/ 下所有算子的目录结构规范:算子主目录放置 README.md,arch22/arch35 子目录仅存放源码文件。 具体变更: 1. **移除冗余的算子子目录层级**:将 blas/<op>/<variant>/ 扁平化为 blas/<op>/,涉及 35 个算子目录 2. **融合多架构 README**:将 dot、gemv、gemv_batched、scal、swap、trmv 的 s/c 变体 README 合并为统一文档 3. **清理 arch 子目录 README**:删除 dot/arch35、rotm/arch22、sbmv/arch35、spmv/arch22、spmv/arch35、symv/arch35 下的 README.md,将有效内容合并至主目录 README 4. **更新目录结构引用**:修正 29 个算子 README 中的目录结构描述,对齐扁平化后的实际路径 ## 关联的Issue [#167](https://gitcode.com/cann/ops-blas/issues/167) ## 测试 目录结构重构,不涉及功能变更,原有测试用例不受影响。 ![47e8113b-862a-466f-9bce-857d39fb524e.png](https://raw.gitcode.com/user-images/assets/8916851/4976ba82-e35c-4f1a-96f2-e0a6e77c60b3/47e8113b-862a-466f-9bce-857d39fb524e.png '47e8113b-862a-466f-9bce-857d39fb524e.png') ## 文档更新 - 融合 6 个算子的多架构 README(dot/gemv/gemv_batched/scal/swap/trmv) - 删除 6 个 arch 子目录 README 并合并内容(dot/rotm/sbmv/spmv/symv) - 更新 29 个算子 README 的目录结构引用 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:目录结构重构 See merge request: cann/ops-blas!1805 天前
refactor(blas): flatten directory structure and fix README files Co-authored-by: wuyi_huawei<wuyi36@hisilicon.com> # message auto-generated for no-merge-commit merge: !180 merge docs/issue-167-flatten-blas-structure into master refactor(blas): flatten directory structure and fix README files Created-by: zhanghua145 Commit-by: wuyi_huawei Merged-by: cann-robot Description: ## 描述 统一 blas/ 下所有算子的目录结构规范:算子主目录放置 README.md,arch22/arch35 子目录仅存放源码文件。 具体变更: 1. **移除冗余的算子子目录层级**:将 blas/<op>/<variant>/ 扁平化为 blas/<op>/,涉及 35 个算子目录 2. **融合多架构 README**:将 dot、gemv、gemv_batched、scal、swap、trmv 的 s/c 变体 README 合并为统一文档 3. **清理 arch 子目录 README**:删除 dot/arch35、rotm/arch22、sbmv/arch35、spmv/arch22、spmv/arch35、symv/arch35 下的 README.md,将有效内容合并至主目录 README 4. **更新目录结构引用**:修正 29 个算子 README 中的目录结构描述,对齐扁平化后的实际路径 ## 关联的Issue [#167](https://gitcode.com/cann/ops-blas/issues/167) ## 测试 目录结构重构,不涉及功能变更,原有测试用例不受影响。 ![47e8113b-862a-466f-9bce-857d39fb524e.png](https://raw.gitcode.com/user-images/assets/8916851/4976ba82-e35c-4f1a-96f2-e0a6e77c60b3/47e8113b-862a-466f-9bce-857d39fb524e.png '47e8113b-862a-466f-9bce-857d39fb524e.png') ## 文档更新 - 融合 6 个算子的多架构 README(dot/gemv/gemv_batched/scal/swap/trmv) - 删除 6 个 arch 子目录 README 并合并内容(dot/rotm/sbmv/spmv/symv) - 更新 29 个算子 README 的目录结构引用 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:目录结构重构 See merge request: cann/ops-blas!1805 天前
README.md

ColwiseMul算子实现

概述

BLAS ColwiseMul算子实现。

ColwiseMul(列方向复数乘法)算子实现了复数向量与矩阵每行的逐元素乘法运算,是BLAS基础线性代数库中的扩展算子之一。

该算子针对复数运算特性进行了优化,高效完成向量与矩阵的列方向乘法操作。

支持的产品

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

目录结构介绍

blas/colwise_mul/
├── README.md                       // 说明文档
└── arch22/
    ├── colwise_mul_host.cpp        // Host 侧实现(arch22)
    └── colwise_mul_kernel.cpp      // Kernel 侧实现(arch22)

算子描述

  • 算子功能:
    ColwiseMul算子实现了复数向量与矩阵每行的逐元素乘法。对应的数学表达式为:
result[i, j] = vec[i] * mat[i, j]

vec是复数向量,mat是复数矩阵,result是输出复数矩阵

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

对应的接口为:

int aclblasColwiseMul(const float *mat, const float *vec, float *result,
                      const int64_t m, const int64_t n, void *stream);
参数 colwise_mul 参数说明
参数列表 Param. Memory in/out 含义
m in 矩阵的行数。
n in 矩阵的列数。
mat device in 复数矩阵,维度为 m × n,存储为 2*m*n 个float。
vec device in 复数向量,包含 m 个元素,存储为 2*m 个float。
result device out 复数矩阵,维度为 m × n,存储为 2*m*n 个float。
  • 算子规格:

    算子类型(OpType)ColwiseMul
    算子输入nameshapedata typeformat
    matm × ncomplexND
    vecmcomplexND
    算子输出resultm × ncomplexND
    核函数名colwise_mul_kernel
  • 算子实现:

    将输入数据从mat和vec的GM地址分块搬运到UB,进行复数乘法计算后再搬出到result所在的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 --ops=colwise_mul --run # --ops=<算子名> --run可选参数,执行测试样例
    

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

    [Success] Case accuracy is verification passed.