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

#### 产品支持情况

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


#### 功能描述

接口功能

- asdBlasMakeDotPlan：初始化该句柄对应的Dot算子配置。
- asdBlasSdot：计算两个实数向量的点积。
- asdBlasCdotu：计算两个复数向量的点积。
- asdBlasCdotc：计算一个复数向量取共轭后和另一个复数向量的点积。

计算公式

- asdBlasSdot的计算公式：

  - 示例：
    输入“x”为：

```
[1.0, 2.0]
```


    输入“y”为：

```
[1.0, 2.0]
```


    调用“Sdot”算子后，输出“result”为：

```
5.0
```


- asdBlasCdotu的计算公式：
其中，x[i]和y[i]是复数。

  - 示例：
    输入“x”为：

```
[ 0.1554+0.8840j, -0.3564-0.2552j]
```


    输入“y”为：

```
[-0.1404+1.3380j, -0.4876+0.1842j]
```


    调用“Cdotu”算子后，输出“result”为：

```
-0.9838+0.1425j
```


- asdBlasCdotc的计算公式：
其中，x[i]和y[i]是复数，conj共轭操作。

  - 示例：
    输入“x”为：

```
[ 0.1554+0.8840j, -0.3564-0.2552j]
```


    输入“y”为：

```
[-0.1404+1.3380j, -0.4876+0.1842j]
```


    调用“Cdotc”算子后，输出“result”为：

```
1.2877-0.1420j
```


#### 函数原型

- AspbStatus asdBlasMakeDotPlan(asdBlasHandle handle)
- AspbStatus asdBlasSdot(asdBlasHandle handle, const int64_t n, aclTensor *x, const int64_t incx, aclTensor *y,const int64_t incy, aclTensor *result)
- AspbStatus asdBlasCdotu(asdBlasHandle handle, const int64_t n, aclTensor *x, const int64_t incx, aclTensor *y,const int64_t incy, aclTensor *result)
- AspbStatus asdBlasCdotc(asdBlasHandle handle, const int64_t n, aclTensor *x, const int64_t incx, aclTensor *y,const int64_t incy, aclTensor *result)


#### 参数说明

- asdBlasMakeDotPlan| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdBlasHandle | dot算子的句柄。 |


- asdBlasSdot & asdBlasCdotu & asdBlasCdotc| 参数名称 | Input/Output | 类型 | 描述 |
| --- | --- | --- | --- |
| handle | Input | asdBlasHandle | dot算子的句柄。 |
| n | Input | const int64\_t | 向量x或向量y中的元素个数。 |
| x | Input | aclTensor \* | 公式中的x，Device侧的Tensor，数据格式支持ND，shape为[n]。 Sdot下数据类型支持FLOAT32。 Cdotc、Cdotu下数据类型支持COMPLEX64。 |
| incx | Input | const int64\_t | 向量x相邻元素间的内存地址偏移量（当前约束为1）。 |
| y | Input | aclTensor \* | 公式中的y，Device侧的Tensor，数据格式支持ND，shape为[n]。 Sdot下数据类型支持FLOAT32。 Cdotc、Cdotu下数据类型支持COMPLEX64。 |
| incy | Input | const int64\_t | 向量y相邻元素间的内存地址偏移量（当前约束为1）。 |
| result | Output | aclTensor \* | 公式中的result，Device侧的Tensor，数据类型支持FLOAT32，只包含一个元素，数据格式支持ND，shape为[1]。 |


#### 返回值说明

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


#### 约束说明

- asdBlasMakeDotPlan：无。
- asdBlasSdot

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

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


#### 调用示例

算子的调用示例参见Dot。
