CANN ops-solver Cgetri复数求逆
Cgetri【免费下载链接】ops-solver本项目是CANN提供的高级数值求解算子库实现矩阵分解、求逆、特征值求解等功能在NPU上的加速计算。项目地址: https://gitcode.com/cann/ops-solver产品支持情况产品是否支持Atlas 200I/500 A2 推理产品×Atlas 推理系列产品×Atlas 训练系列产品×Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Ascend 950PR/Ascend 950DT×功能说明接口功能aclsolverCgetri计算复数矩阵的逆矩阵。计算公式 $$ A^{-1}A I $$ 其中$A$为$n \times n$阶非奇异复数方阵$I$为$n$阶单位矩阵。示例输入A为[40i, 30i, 20i, 10i 30i, 40i, 30i, 20i 20i, 30i, 40i, 30i 10i, 20i, 30i, 40i]输入n为 4调用aclsolverCgetri算子后输出A为[0.40i, -0.30i, 0.20i, -0.10i -0.30i, 0.60i, -0.40i, 0.20i 0.20i, -0.40i, 0.60i, -0.30i -0.10i, 0.20i, -0.30i, 0.40i]函数原型函数定义aclError aclsolverCgetri( aclsolverHandle_t handle, const int64_t n, std::complexfloat *A, const int64_t lda, int32_t *info);参数说明参数名输入输出描述handle输入solver handle通过aclsolverCreate创建n输入矩阵A的行数和列数A输入/输出输入为矩阵A通常为Cgetrf分解后的L和U矩阵输出为逆矩阵数据类型仅支持COMPLEX64数据格式支持NDshape为[n, n]lda输入A左右相邻元素间的内存地址偏移量当前约束为ninfo输出求逆结果信息数据类型支持int32_t算子约束lda、info参数在当前版本实际未启用。调用实现 使用内核调用符调用核函数。调用示例完整代码示例aclsolverCgetri复数矩阵求逆示例核心调用步骤#include vector #include complex #include acl/acl.h #include cann_ops_solver.h int32_t main(int32_t argc, char *argv[]) { // 固定写法acl初始化 int32_t deviceId 0; aclrtStream stream nullptr; aclInit(nullptr); aclrtSetDevice(deviceId); aclrtCreateStream(stream); // 创建solver handle并设置stream aclsolverHandle_t handle nullptr; aclsolverCreate(handle); aclsolverSetStream(handle, stream); // 构造输入数据 int64_t n 4; size_t aMatrixFileSize n * n * sizeof(float) * 2; std::complexfloat* A; aclrtMallocHost((void**)(A), aMatrixFileSize); // 填充A矩阵数据... int32_t *info; // 调用 aclsolverCgetri auto ret aclsolverCgetri(handle, n, A, n, info); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclsolverCgetri failed. ERROR: %d\n, ret); return ret); // 释放资源 aclrtFreeHost(A); aclsolverDestroy(handle); aclrtDestroyStream(stream); aclrtResetDevice(deviceId); aclFinalize(); return 0; }【免费下载链接】ops-solver本项目是CANN提供的高级数值求解算子库实现矩阵分解、求逆、特征值求解等功能在NPU上的加速计算。项目地址: https://gitcode.com/cann/ops-solver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考