---
title: kutacc_af2_triangle_multiplication_gate_and_out_linear
description: "triangle_multiplication的中间步骤，基于input_act通过线性变化生成gate及基于center_act线性变化生成out"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_136.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_136.html
indexId: c1a931eec55d95ac6b0666144333aae64a13e82be5c94ec47a25ec84091aa91967
---
# kutacc_af2_triangle_multiplication_gate_and_out_linear

triangle_multiplication的中间步骤，基于input_act通过线性变化生成gate及基于center_act线性变化生成out

#### 接口定义

void kutacc_af2_triangle_multiplication_gate_and_out_linear(kutacc_tensor_h gate, kutacc_tensor_h out, kutacc_af2_tm_act_inputs_t *tm_acts_ptr, kutacc_tensor_h center_act,

kutacc_af2_tm_linear_weights_t *tm_weights_ptr, bool input_prepack);


#### 参数

表1 入参定义

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| gate | kutacc\_tensor\_h | 门控张量 | 输入 |
| out | kutacc\_tensor\_h | 输出张量 | 输出 |
| tm\_acts\_ptr | kutacc\_af2\_tm\_act\_inputs\_t \* | kutacc\_af2\_tm\_act\_inputs\_t类型的指针，具体数据结构定义见表2 kutacc\_af2\_tm\_act\_inputs\_t数据结构表定义 | 输入 |
| center\_act | kutacc\_tensor\_h | equation步骤获得center\_act经过permute及layernorm变化后获得的输入 | 输入 |
| tm\_weights\_ptr | kutacc\_af2\_tm\_linear\_weights\_t \* | kutacc\_af2\_tm\_linear\_weights\_t类型的指针，具体数据结构定义见表3 kutacc\_af2\_tm\_linear\_weights\_t数据结构表定义 | 输入 |
| input\_prepack | bool | 是否prepack | 输入 |


表2 kutacc_af2_tm_act_inputs_t数据结构表定义

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| n\_res | int64\_t | 残基数 | 输入 |
| n\_res\_gather | int64\_t | 残基数 | 输入 |
| proj\_act | kutacc\_tensor\_h | act的左右投影 | 输出 |
| input\_act | kutacc\_tensor\_h | 输入值act经过layernorm归一化后的值 | 输入 |
| proj\_act\_gate | kutacc\_tensor\_h | 临时门控张量 | 输入 |


表3 kutacc_af2_tm_linear_weights_t数据结构表定义

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| c\_o | int64\_t | 输出特征维度 | 输入 |
| c\_i | int64\_t | 输入特征维度 | 输入 |
| gating\_w | kutacc\_tensor\_h | 生成gate用的权重 | 输出 |
| gating\_b | kutacc\_tensor\_h | 生成gate用的偏置 | 输入 |
| output\_proj\_w | kutacc\_tensor\_h | 生成out用的权重 | 输入 |
| output\_proj\_b | kutacc\_tensor\_h | 生成out用的偏置 | 输入 |


triangle_multiplication的整数参数应满足的约束关系：

n_res, n_res_gather, c_o, c_i, c_z > 0，

n_res * n_res_gather < INT64_MAX，

c_i = c_o;

单进程情况下n_res必须等于n_res_gather，多进程则不需要满足该条件
