transpose.h
处理转置的函数。
函数
-
void nvte_cast_transpose(const NVTETensor input, NVTETensor output, cudaStream_t stream)
转换并转置输入。
此函数转换输入并产生 2 个结果
output
中的行优先数据是转换的结果output
中的列优先数据是转换结果的转置。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
output – [inout] 转换和转置的结果。行优先数据的形状:[N, H]。列优先数据的形状:[H, N]
stream – [in] 用于操作的 CUDA 流。
-
void nvte_transpose(const NVTETensor input, NVTETensor transposed_output, cudaStream_t stream)
转置输入。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
transposed_output – [out] 转置的结果。形状:[H, N]。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_cast_transpose_dbias(const NVTETensor input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
转换并转置输入。此外,沿第一维度缩减输入。
此函数转换输入并产生 2 个结果
output
是转换(行优先数据)和转置转换(列优先数据)的结果dbias
是输入沿第一维度缩减的结果。
使用空张量作为 workspace 调用此函数不会执行操作,而是将 workspace 张量的形状和类型设置为所需的值。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
output – [inout] 转换和转置的结果。行优先数据的形状:[N, H]。列优先数据的形状:[H, N]
dbias – [out] 输入沿第一维度缩减的结果。形状:[H]。
workspace – [out] 工作区张量。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_fp8_transpose_dbias(const NVTETensor input, NVTETensor transposed_output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
转置 FP8 输入。此外,沿第一维度缩减输入。
此函数接受 FP8 输入并产生 2 个结果
transposed_output
是输入的转置结果。dbias
是输入沿第一维度缩减的结果。
使用空张量作为 workspace 调用此函数不会执行操作,而是将 workspace 张量的形状和类型设置为所需的值。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
transposed_output – [inout] 转置的结果。形状:[H, N]。
dbias – [out] 输入沿第一维度缩减的结果。形状:[H]。
workspace – [out] 工作区张量。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_multi_cast_transpose(size_t num_tensors, const NVTETensor *input_list, NVTETensor *output_list, cudaStream_t stream)
转换并转置多个张量。
- 参数:
num_tensors – [in] 张量的数量。
input_list – [in] 2D 输入张量列表。
output_list – [inout] 转换后的张量列表。它们的行优先数据成员的维度与 input_list 中的张量匹配。它们的列优先数据成员的维度是转置的。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_cast_transpose_dbias_dgelu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 GeLU 操作的反向传播,然后进行转换和转置。此外,沿第一维度缩减 GeLU 反向传播的结果。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
dbias
等于reduce(dact(input), axis=0)
使用空张量作为 workspace 调用此函数不会执行操作,而是将 workspace 张量的形状和类型设置为所需的值。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
act_input – [in] 用作前向激活操作输入的张量。形状 [N, H]。
output – [inout] 转换的结果。行优先数据的形状:[N, H]。列优先数据的形状:[H, N]。
dbias – [out] dact(input) 沿第一维度缩减的结果。形状:[H]。
workspace – [out] 工作区张量。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_cast_transpose_dbias_dsilu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 SiLU 操作的反向传播,然后进行转换和转置。此外,沿第一维度缩减 SiLU 反向传播的结果。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
dbias
等于reduce(dact(input), axis=0)
使用空张量作为 workspace 调用此函数不会执行操作,而是将 workspace 张量的形状和类型设置为所需的值。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
act_input – [in] 用作前向激活操作输入的张量。形状 [N, H]。
output – [inout] 转换的结果。行优先数据的形状:[N, H]。列优先数据的形状:[H, N]。
dbias – [out] dact(input) 沿第一维度缩减的结果。形状:[H]。
workspace – [out] 工作区张量。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_cast_transpose_dbias_drelu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 ReLU 操作的反向传播,然后进行转换和转置。此外,沿第一维度缩减 ReLU 反向传播的结果。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
dbias
等于reduce(dact(input), axis=0)
使用空张量作为 workspace 调用此函数不会执行操作,而是将 workspace 张量的形状和类型设置为所需的值。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
act_input – [in] 用作前向激活操作输入的张量。形状 [N, H]。
output – [inout] 转换的结果。行优先数据的形状:[N, H]。列优先数据的形状:[H, N]。
dbias – [out] dact(input) 沿第一维度缩减的结果。形状:[H]。
workspace – [out] 工作区张量。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_cast_transpose_dbias_dqgelu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 Quick GeLU 操作的反向传播,然后进行转换和转置。此外,沿第一维度缩减 Quick GeLU 反向传播的结果。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
dbias
等于reduce(dact(input), axis=0)
使用空张量作为 workspace 调用此函数不会执行操作,而是将 workspace 张量的形状和类型设置为所需的值。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
act_input – [in] 用作前向激活操作输入的张量。形状 [N, H]。
output – [inout] 转换的结果。行优先数据的形状:[N, H]。列优先数据的形状:[H, N]。
dbias – [out] dact(input) 沿第一维度缩减的结果。形状:[H]。
workspace – [out] 工作区张量。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_cast_transpose_dbias_dsrelu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 Squared ReLU 操作的反向传播,然后进行转换和转置。此外,沿第一维度缩减 Squared ReLU 反向传播的结果。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
dbias
等于reduce(dact(input), axis=0)
使用空张量作为 workspace 调用此函数不会执行操作,而是将 workspace 张量的形状和类型设置为所需的值。
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
act_input – [in] 用作前向激活操作输入的张量。形状 [N, H]。
output – [inout] 转换的结果。行优先数据的形状:[N, H]。列优先数据的形状:[H, N]。
dbias – [out] dact(input) 沿第一维度缩减的结果。形状:[H]。
workspace – [out] 工作区张量。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_dgeglu_cast_transpose(const NVTETensor input, const NVTETensor act_input, NVTETensor output, cudaStream_t stream)
计算输入的门控 GeLU 激活,此外还转换和转置输出。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
gated_act_input – [in] 用作门控激活操作前向传播输入的张量。形状 [N, H * 2]。
output – [inout] 转换的结果。行优先数据的形状:[N, H * 2]。列优先数据的形状:[H * 2, N]。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_dswiglu_cast_transpose(const NVTETensor input, const NVTETensor act_input, NVTETensor output, cudaStream_t stream)
计算输入的门控 Swish 激活,并额外执行类型转换和转置输出。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
gated_act_input – [in] 用作门控激活操作前向传播输入的张量。形状 [N, H * 2]。
output – [inout] 转换的结果。行优先数据的形状:[N, H * 2]。列优先数据的形状:[H * 2, N]。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_dreglu_cast_transpose(const NVTETensor input, const NVTETensor act_input, NVTETensor output, cudaStream_t stream)
计算输入的门控 ReLU 激活,并额外执行类型转换和转置输出。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
gated_act_input – [in] 用作门控激活操作前向传播输入的张量。形状 [N, H * 2]。
output – [inout] 转换的结果。行优先数据的形状:[N, H * 2]。列优先数据的形状:[H * 2, N]。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_dqgeglu_cast_transpose(const NVTETensor input, const NVTETensor act_input, NVTETensor output, cudaStream_t stream)
计算输入的门控 Quick GeLU 激活,并额外执行类型转换和转置输出。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
gated_act_input – [in] 用作门控激活操作前向传播输入的张量。形状 [N, H * 2]。
output – [inout] 转换的结果。行优先数据的形状:[N, H * 2]。列优先数据的形状:[H * 2, N]。
stream – [in] 用于操作的 CUDA 流。
-
void nvte_dsreglu_cast_transpose(const NVTETensor input, const NVTETensor act_input, NVTETensor output, cudaStream_t stream)
计算输入的门控平方 ReLU 激活,并额外执行类型转换和转置输出。
此函数产生 2 个结果
output
的行优先数据等于cast(dact(input))
output
的列优先数据等于transpose(cast(dact(input)))
- 参数:
input – [in] 形状为 [N, H] 的输入张量。
gated_act_input – [in] 用作门控激活操作前向传播输入的张量。形状 [N, H * 2]。
output – [inout] 转换的结果。行优先数据的形状:[N, H * 2]。列优先数据的形状:[H * 2, N]。
stream – [in] 用于操作的 CUDA 流。