---
title: 调用算术类算子
description: "算术类算子目前支持两方或三方计算（部分算子支持），两方计算节点分别设置为0计算节点和1计算节点，三方计算节点设置为0计算节点、1计算节点和2计算节点。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/tee/kcal/kunpeng_kcal_16_0050.html
sourcePath: /source/zh/kunpengcctrustzone/tee/kcal/kunpeng_kcal_16_0050.html
indexId: 541ffae2752bb6573e383a07a2963f7b67d5bab7918e23c09b2f71f8444228f364
---
# 调用算术类算子

算术类算子目前支持两方或三方计算（部分算子支持），两方计算节点分别设置为0计算节点和1计算节点，三方计算节点设置为0计算节点、1计算节点和2计算节点。

#### 两方调用

1. 参考DG_InitConfigOpts，通过DataGuard接口构造KCAL的配置信息，如通信接口和节点信息。
2. 初始化算术类算子的函数组，算术类算子对外接口都在此函数组中。
3. 初始化需要将配置信息配置到KCAL中。
4. 设置所有节点信息。
5. 交换种子信息。
6. 选择对应的计算节点调用相应的接口。0计算节点：
  a. 调用两次分片接口，一次为接收1计算节点数据，另一次为分片自身数据并将分片数据的size发送给1计算节点。
  b. 拼接两次分片的结果作为计算接口的入参，要注意拼接顺序。
  c. 调用calculate接口，根据输入算子类型的不同进行不同的计算。
  d. 调用还原接口，获取最终的计算结果。

1计算节点：
  a. 调用两次分片接口，一次为分片自身数据并发送分片数据到0计算节点，另一次为接收0分片数据的size。
  b. 将分片的结果作为计算接口的入参。
  c. 调用calculate接口，根据输入算子类型的不同进行不同的计算。
  d. 调用还原接口，获取最终的计算结果。


#### 三方调用

1. 参考DG_InitConfigOpts，通过DataGuard接口构造KCAL的配置信息，如通信接口和节点信息。
2. 初始化算术类算子的函数组，算术类算子对外接口都在此函数组中。
3. 初始化需要将配置信息配置到KCAL中。
4. 设置所有节点信息。
5. 交换种子信息。
0计算节点：

  a. 调用两次分片接口，分片接口和两方分片接口保持一致。
  b. 拼接两次分片的结果作为计算接口的入参，要注意拼接顺序。
  c. 调用calculate接口，根据输入算子类型的不同进行不同的计算。
  d. 调用还原接口，获取最终的计算结果。
1计算节点：

  a. 调用两次分片接口，分片接口和两方分片接口保持一致。
  b. 将分片的结果作为计算接口的入参。
  c. 调用calculate接口，根据输入算子类型的不同进行不同的计算。
  d. 调用还原接口，获取最终的计算结果。
2计算节点：a. 调用两次分片接口，分片接口和两方分片接口保持一致。
b. 将分片的结果作为计算接口的入参。
c. 调用calculate接口，根据输入算子类型的不同进行不同的计算。
d. 调用还原接口，获取最终的计算结果。
