---
title: 输入输出
description: "当参数type为LINEAR_ALL_REDUCE、LINEAR_REDUCE_SCATTER、ALL_GATHER_LINEAR、PURE_LINEAR、ALL_GATHER_LINEAR_REDUCE_SCATTER时输入输出。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0173.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0173.html
indexId: fc98185c4675bbc25699d30d84bbca3be92ffb87d7386b51af7eb4d06b56fd2c64
---
# 输入输出

当参数type为LINEAR_ALL_REDUCE、LINEAR_REDUCE_SCATTER、ALL_GATHER_LINEAR、PURE_LINEAR、ALL_GATHER_LINEAR_REDUCE_SCATTER时输入输出。

#### 输入

| 参数 | 维度 | 数据类型 | 格式 | 描述 |
| --- | --- | --- | --- | --- |
| input | [m, k]/[batch, m, k] | 浮点：float16/bf16 量化： “quantType”为“per\_group”时：float16/bf16 其它场景：int8 | ND | 矩阵乘运算的A矩阵。 当type为ALL\_GATHER\_LINEAR\_REDUCE\_SCATTER时，不支持量化。 当type为LINEAR\_REDUCE\_SCATTER时： 当batch＞1时，需满足batch能整除rackSize。 其它情况需满足m能整除rankSize。 mc2时仅支持2维，k在[256, 65535)之间。 |
| weight | ND：[k, n] NZ： 非量化：[1,n/16, k,16]或[k, n] 量化：[1,n/32, k, 32]或[k, n] mc2时： ND：[k, n] NZ：[k, n] | 浮点：float16/bf16 量化：int8 | ND/NZ | 权重，矩阵乘的B矩阵。 “backend”为“lcoc”时，type为LINEAR\_ALL\_REDUCE， 非量化场景float16/bf16支持NZ。 量化场景支持NZ时，input的数据类型必须为int8，bias和deqScale必须为W8A8场景。 “backend”为“hccl”或“lccl”时仅float16支持NZ。 NZ格式时： k需要为16的倍数。 hasResidual不支持配置为true。 不支持“quantType”为“per\_group”。 不支持“keepIntermediate”为“true”的场景。 不支持转置，即不支持“transWeight”为true。 ALL\_GATHER\_LINEAR\_REDUCE\_SCATTER时，不支持量化。 mc2时仅支持2维，k在[256, 65535)之间。 |
| bias | “quantType”为“per\_tensor”时支持：[1] “quantType”为“per\_channel”时支持：[1, n]/[n] “quantType”“为”“per\_group”时支持：[] “quantType”“为”“per\_token”时支持：[1,n]/[n] | W8A16量化场景：float16/bf16 W8A8量化场景：int32 | ND | 叠加的偏置矩阵。 ALL\_GATHER\_LINEAR\_REDUCE\_SCATTER时，不支持。 |
| deqScale | “quantType”为“per\_tensor”时支持：[1] “quantType”为“per\_channel”时支持：[1, n]/[n] “quantType”为“per\_group”时支持：[k/quantGroupSize, n] “quantType”为“per\_token”时支持：[1, n]/[n] | W8A16量化场景：float16/bf16 W8A8量化场景： 输出是float16的时候，deqScale为int64 输出是bf16的时候，同时支持int64和float | ND | 反量化的scale。 仅量化时需要此参数。 当type为ALL\_GATHER\_LINEAR\_REDUCE\_SCATTER时不支持。 allgatherV2不支持量化，allgatherV2是指type为ALL\_GATHER\_LINEAR，keepIntermediate参数为true的场景。 |
| residual | [n] | float16/bf16 | ND | 残差，用于叠加到最后的输出结果上。 当type为ALL\_GATHER\_LINEAR\_REDUCE\_SCATTER时不支持。 非量化不支持残差。 |
| perTokenScale | [m] | float | ND | perToken反量化scale，量化时输入，只有当quantType是QUANT\_TYPE\_PER\_TOKEN的时候才需要。 |


#### 输出

| 参数 | 维度 | 数据类型 | 格式 | 描述 |
| --- | --- | --- | --- | --- |
| output | 当type为linear\_all\_reduce/pure\_linear：[m, n]/[batch, m, n] 当type为linear\_reduce\_scatter：[m/rankSize, n]/[batch/rankSize, m, n] 当type为all\_gather\_linear：[m\*rankSize, n]/[batch\*rankSize, m, n]; 当type为ALL\_GATHER\_LINEAR\_REDUCE\_SCATTER：[m\*agDim/rsDim, n] | float16/bf16 | ND | 输出tensor，维度数与x一致。 |
| intermediateOutput | [m\*rankSize, n]/[batch\*rankSize, m, n] | float16/bf16 | ND | 输出tensor，维度数与x一致。 “keepIntermediate”为true且“ParallelType”使用“ALL\_GATHER\_LINEAR”时生效。 |
