Cswap算子实现
【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas
概述
BLAS Cswap算子实现。
Cswap(Complex Swap)算子实现了两个复数向量的交换运算,是BLAS基础线性代数库中的核心算子之一。
复数向量在内存中以交错float数组形式存储:[real0, imag0, real1, imag1, ...]
支持的产品
- Atlas A3 训练系列产品/Atlas A3 推理系列产品
- Atlas A2 训练系列产品/Atlas A2 推理系列产品
目录结构介绍
├── cswap │ ├── CMakeLists.txt // 编译工程文件 │ ├── README.md // 说明文档 │ └── cswap_test.cpp // 算子调用样例算子描述
- 算子功能:
cswap算子实现了两个复数向量x和y的交换。对应的数学表达式为:
x <-> y- 对应的接口:
int aclblasCswap(aclblasHandle handle, float *x, float *y, const int64_t n, const int64_t incx, const int64_t incy);| 参数 | cswap 参数说明 | |||
| 参数列表 | Param. | Memory | in/out | 含义 |
| handle | host | in | ACL流handle,用于传入stream。 | |
| x | device | in/out | 复数向量(存储为float数组,2*n个元素)。 | |
| y | device | in/out | 复数向量(存储为float数组,2*n个元素)。 | |
| n | in | 向量中的复数元素个数。 | ||
| incx/incy | in | x/y中连续元素之间的步长。 | ||
算子规格:
算子类型(OpType) Cswap 算子输入 name shape data type format x/y 8 * 2048 complex ND 算子输出 x 8 * 2048 complex ND y 8 * 2048 complex ND 核函数名 cswap_kernel 算子实现:
复数向量被视为2*n个float元素,直接复用swap逻辑,使用ping-pong双缓冲策略完成交换。
调用实现
使用内核调用符<<<>>>调用核函数。
编译运行
在本样例根目录下执行如下步骤,编译并执行算子。
配置环境变量
请根据当前环境上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=cswap --run # --ops=<算子名> --run可选参数,执行测试样例执行结果如下,说明精度对比成功。
[Success] Case accuracy is verification passed. [PASS] cswap_test
【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考