---
title: Ctrmv
description: "| 硬件型号 | 支持情况 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/SiP/SIP_API_0017.html
sourcePath: /source/zh/canncommercial/900/API/SiP/SIP_API_0017.html
indexId: d188d50a350c44614d3edf40a34d8b669004d9dd326a0857f3b397b050fd4b7755
---
# Ctrmv

#### 产品支持情况

| 硬件型号 | 支持情况 |
| --- | --- |
| Atlas 200I/500 A2 推理产品 | 不支持 |
| Atlas 推理系列产品 | 不支持 |
| Atlas 训练系列产品 | 不支持 |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | 支持 |
| Atlas A3 推理系列产品 / Atlas A3 训练系列产品 | 支持 |


#### 功能描述

接口功能

- asdBlasMakeCtrmvPlan：初始化该句柄对应的Ctrmv算子配置。
- asdBlasCtrmv：单精度复数矩阵向量乘法算子，用于计算一个复数三角矩阵与一个复数向量的乘积。

计算公式

- asdBlasCtrmv的计算公式：
  矩阵向量乘积：

  转置矩阵向量乘积：

  共轭转置矩阵向量乘积：


- 示例：
  输入“A”为：

```
[  [ 1+2i, 1+2i ],
[ 1+2i, 1+2i ]  ]
```


  输入“x”为：

```
[  [ 0+0i, 1+i ]  ]
```


  输入“uplo”为：L，输入“trans”为：N，输入“diag”为：N。

  输入“n”为：2，输入“lda”为：2，输入“incx”为: 1。

  调用“Ctrmv”算子后，输出“x”为：

```
[  [ 0+0i, -1+3i ]  ]
```


#### 函数原型

- AspbStatus asdBlasMakeCtrmvPlan(asdBlasHandle handle, asdBlasFillMode_t uplo, int64_t n)
- AspbStatus asdBlasCtrmv(asdBlasHandle handle, asdBlasFillMode_t uplo, asdBlasOperation_t trans, asdBlasDiagType_t diag,const int64_t n, aclTensor *A, const int64_t lda, aclTensor *x, const int64_t incx)


#### 参数说明

- asdBlasMakeCtrmvPlan| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdBlasHandle | ctrmv算子的句柄。 |
| uplo | Input | asdBlasFillMode\_t | 指定矩阵A的存储格式。 ASDBLAS\_FILL\_MODE\_LOWER // 下三角 ASDBLAS\_FILL\_MODE\_UPPER // 上三角 |
| n | Input | int64\_t | 矩阵A的阶数，向量x的维度。 |


- asdBlasCtrmv| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdBlasHandle | ctrmv算子的句柄。 |
| uplo | Input | asdBlasFillMode\_t | 指定矩阵A的存储格式。 ASDBLAS\_FILL\_MODE\_LOWER // 下三角 ASDBLAS\_FILL\_MODE\_UPPER // 上三角 |
| trans | Input | asdBlasDiagType\_t | 指定矩阵A是否需要转置。 ASDBLAS\_OP\_N // 不转置 ASDBLAS\_OP\_T // 转置 ASDBLAS\_OP\_C // 共轭转置 |
| diag | Input | asdBlasDiagType\_t | 指定矩阵A的对角元素处理方式。 ASDBLAS\_DIAG\_NON\_UNIT // 一般矩阵 ASDBLAS\_DIAG\_UNIT // 单位矩阵 |
| n | Input | const int64\_t | 矩阵A的阶数，向量x的维度。 |
| A | Input | aclTensor \* | 公式中的A，Device侧的Tensor，数据类型仅支持COMPLEX64，数据格式支持ND，shape为[n，n]。 |
| lda | Input | const int64\_t | 矩阵A的第一个维度大小。 |
| x | Input/Output | aclTensor \* | 公式中的x，Device侧的Tensor，数据类型仅支持COMPLEX64，数据格式支持ND，shape为[n]。 |
| incx | Input | const int64\_t | 向量x中元素的步长。 |


#### 返回值说明

返回值相关说明参见返回值。


#### 约束说明

- asdBlasMakeCtrmvPlan：无。
- asdBlasCtrmv

  - 输入的元素个数n当前覆盖支持[1，8192]。
  - 算子输入shape为[n，n]、[n]，输出shape为[n]。
  - 算子实际计算时，不支持ND高维度运算（不支持维度≥3的运算）。


#### 调用示例

算子的调用示例参见Ctrmv。
