Sgetri【免费下载链接】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×功能说明接口功能aclsolverSgetri计算实数矩阵的逆矩阵。计算公式 $$ A^{-1}A I $$ 其中$A$为$n \times n$阶非奇异实数方阵$I$为$n$阶单位矩阵。示例输入A为[4.0, 3.0, 2.0, 1.0 3.0, 4.0, 3.0, 2.0 2.0, 3.0, 4.0, 3.0 1.0, 2.0, 3.0, 4.0]输入n为 4调用aclsolverSgetri算子后输出A为[0.4, -0.3, 0.2, -0.1 -0.3, 0.6, -0.4, 0.2 0.2, -0.4, 0.6, -0.3 -0.1, 0.2, -0.3, 0.4]函数原型函数定义aclError aclsolverSgetri( aclsolverHandle_t handle, const int64_t n, float *A, const int64_t lda, int32_t *info);参数说明参数名输入输出描述handle输入solver handle通过aclsolverCreate创建n输入矩阵A的行数和列数A输入/输出输入为矩阵A通常为Sgetrf分解后的L和U矩阵输出为逆矩阵数据类型仅支持FLOAT32数据格式支持NDshape为[n, n]lda输入A左右相邻元素间的内存地址偏移量当前约束为ninfo输出求逆结果信息数据类型支持int32_t算子约束lda、info参数在当前版本实际未启用。调用实现 使用内核调用符调用核函数。调用示例完整代码示例aclsolverSgetri矩阵求逆示例核心调用步骤#include vector #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); float* A; aclrtMallocHost((void**)(A), aMatrixFileSize); // 填充A矩阵数据... int32_t *info; // 调用 aclsolverSgetri auto ret aclsolverSgetri(handle, n, A, n, info); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclsolverSgetri 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),仅供参考