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

CANN ColwiseMul算子实现

ColwiseMul算子实现

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

概述

BLAS ColwiseMul算子实现。

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

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

支持的产品

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

目录结构介绍

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

算子描述

  • 算子功能:
    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.Memoryin/out含义
min矩阵的行数。
nin矩阵的列数。
matdevicein复数矩阵,维度为 m × n,存储为 2*m*n 个float。
vecdevicein复数向量,包含 m 个元素,存储为 2*m 个float。
resultdeviceout复数矩阵,维度为 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.

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

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

http://www.jsqmd.com/news/927911/

相关文章:

  • AI如何成为人类能力增强器:五大场景实操与思维升级指南
  • 英雄联盟智能助手Seraphine:3大核心功能提升你的游戏胜率
  • DownKyi视频下载终极指南:三分钟掌握B站高清视频批量下载技巧
  • 别再只用TileMap了!手把手教你用Godot4.2打造一个轻量级可交互的2D网格系统
  • AI时代网络安全攻防升级:从Deepfake到零信任的实战防御指南
  • CS上线后权限维持与横向移动实战:从User到System的完整攻击链复盘
  • BitCPM-CANN技术深度解析:首个基于华为昇腾NPU的端到端三值训练系统
  • AI时代下的Go语言编译过程学习
  • 别再死磕OpenAI CLIP了!EVA-CLIP保姆级复现教程(含LAMB优化器与Flash Attention配置)
  • paraphrase-multilingual-MiniLM-L12-v2 vs 传统BERT:为什么它是多语言NLP的最佳选择
  • 不止于矩阵计算:用GSL库搞定C++中的Gamma分布、t分布与随机数生成
  • 无人机航拍违禁植物识别数据集|低空禁毒巡检|安防监管视觉训练集 智慧安防无人机数据集|野外违禁品监测|AI目标识别深度学习样本库 低空安全巡检数据集|野外违禁植株识别|安防视觉模型训练数据
  • 如何快速掌握NVIDIA Profile Inspector:终极显卡性能调校指南
  • SSNet自监督学习在6G流体天线信道外推中的突破
  • ChatGPT Plus订阅取消决策:AI工具链优化与成本效益分析
  • 如何永久保存微信聊天记录:3步实现数据自主管理终极指南
  • 金融情感分析终极指南:使用Distilbert模型快速分析财报新闻的完整教程
  • T3Q_SOLAR_SLERP_v1.0-openmind完全指南:如何快速上手这款强大的文本生成模型
  • Nacos 2.x 本地联调踩坑记:解决 gRPC 端口偏移导致的 ‘UNAVAILABLE: io exception‘
  • 实战复盘:用Frida Hook搞定Android App签名校验,我踩过的那些坑都在这了
  • 从STM32 HAL库转战英飞凌TC264:手把手教你搞定PIT定时器中断与正交编码器(逐飞库实战)
  • 第16章:大型任务拆解与多文件修改
  • 10个惊艳案例展示:xinsir-controlnet-openpose-sdxl-1.0如何掌控人物姿态生成
  • 从伯德图到阶跃响应:手把手教你用Matlab分析控制系统稳定性与快速性(以PID校正为例)
  • 从模型导入到坐标分析:SuperMap iDesktopX处理超图CBD北京示例数据的避坑指南
  • Boss Show Time:3个技巧帮你快速筛选最新招聘岗位
  • 终极指南:Alienware灯光与风扇控制工具完全配置手册
  • 用Unity UGUI VerticalLayoutGroup 和递归算法,5步搞定可无限扩展的树形菜单
  • 如何对系统进行监控?
  • 深度解析h2o-danube-1.8b-base:H2O.ai革命性18亿参数基础模型全面指南