cast.h
用于 cast(转换)到/从 FP8/MXFP8 的函数。
用于 cast(转换)到/从 FP8 的函数。
函数
-
void nvte_quantize(const NVTETensor input, NVTETensor output, cudaStream_t stream)
将输入张量 cast(转换)为 FP8/MXFP8。如果输出张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block quantization(块量化) (MXFP8)。
- 参数:
input – [in] 要 cast(转换)的输入张量。
output – [inout] 输出 FP8/MXFP8 张量。
stream – [in] 用于操作的 CUDA stream(流)。
-
void nvte_quantize_noop(const NVTETensor input, NVTETensor output, NVTETensor noop, cudaStream_t stream)
将输入张量 cast(转换)为 FP8/MXFP8,并提供基于 ‘noop’ 张量值立即退出内核的选项。如果输出张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block quantization(块量化) (MXFP8)。
- 参数:
input – [in] 要 cast(转换)的输入张量。
output – [inout] 输出 FP8/MXFP8 张量。
noop – [out] Noop 张量。
stream – [in] 用于操作的 CUDA stream(流)。
-
void nvte_quantize_dbias(const NVTETensor input, NVTETensor output, NVTETensor dbias, NVTETensor workplace, cudaStream_t stream)
将输入张量 cast(转换)为 MXFP8。此外,沿列 reduce(缩减)输入。如果输出张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block quantization(块量化) (MXFP8)。
此函数产生 2 个结果
output
等于cast(dact(input))
dbias
等于reduce(dact(input), dim=1)
使用空张量作为 workspace(工作区)调用此函数不会执行操作,而是将 workspace(工作区)张量的形状和类型设置为所需的值。
- 参数:
input – [in] 要 cast(转换)的输入张量。
output – [inout] 输出 FP8/MXFP8 张量。
dbias – [out] 沿列缩减输入的結果。
workspace – [out] Workspace(工作区)张量。
stream – [in] 用于操作的 CUDA stream(流)。
-
void nvte_quantize_dbias_dgelu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 GeLU 操作的反向传播,然后 cast(转换)为 FP8/MXFP8。此外,沿列 reduce(缩减)GeLU 反向传播的结果。如果输出张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block quantization(块量化) (MXFP8)。
此函数产生 2 个结果
output
等于cast(dact(input))
dbias
等于reduce(dact(input), dim=1)
使用空张量作为 workspace(工作区)调用此函数不会执行操作,而是将 workspace(工作区)张量的形状和类型设置为所需的值。
- 参数:
input – [in] 要 cast(转换)的输入张量。
act_input – [in] Activation(激活)输入张量。
output – [inout] 输出 FP8/MXFP8 张量。
dbias – [out] 沿列缩减输入的結果。
workspace – [out] Workspace(工作区)张量。
stream – [in] 用于操作的 CUDA stream(流)。
-
void nvte_quantize_dbias_dsilu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 SiLU 操作的反向传播,然后 cast(转换)为 FP8/MXFP8。此外,沿列 reduce(缩减)SiLU 反向传播的结果。如果输出张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block quantization(块量化) (MXFP8)。
此函数产生 2 个结果
output
等于cast(dact(input))
dbias
等于reduce(dact(input), dim=1)
使用空张量作为 workspace(工作区)调用此函数不会执行操作,而是将 workspace(工作区)张量的形状和类型设置为所需的值。
- 参数:
input – [in] 要 cast(转换)的输入张量。
act_input – [in] Activation(激活)输入张量。
output – [inout] 输出 FP8/MXFP8 张量。
dbias – [out] 沿列缩减输入的結果。
workspace – [out] Workspace(工作区)张量。
stream – [in] 用于操作的 CUDA stream(流)。
-
void nvte_quantize_dbias_drelu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 ReLU 操作的反向传播,然后 cast(转换)为 FP8/MXFP8。此外,沿列 reduce(缩减)ReLU 反向传播的结果。如果输出张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block quantization(块量化) (MXFP8)。
此函数产生 2 个结果
output
等于cast(dact(input))
dbias
等于reduce(dact(input), dim=1)
使用空张量作为 workspace(工作区)调用此函数不会执行操作,而是将 workspace(工作区)张量的形状和类型设置为所需的值。
- 参数:
input – [in] 要 cast(转换)的输入张量。
act_input – [in] Activation(激活)输入张量。
output – [inout] 输出 FP8/MXFP8 张量。
dbias – [out] 沿列缩减输入的結果。
workspace – [out] Workspace(工作区)张量。
stream – [in] 用于操作的 CUDA stream(流)。
-
void nvte_quantize_dbias_dqgelu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 Quick GeLU 操作的反向传播,然后 cast(转换)为 FP8/MXFP8。此外,沿列 reduce(缩减)Quick GeLU 反向传播的结果。如果输出张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block quantization(块量化) (MXFP8)。
此函数产生 2 个结果
output
等于cast(dact(input))
dbias
等于reduce(dact(input), dim=1)
使用空张量作为 workspace(工作区)调用此函数不会执行操作,而是将 workspace(工作区)张量的形状和类型设置为所需的值。
- 参数:
input – [in] 要 cast(转换)的输入张量。
act_input – [in] Activation(激活)输入张量。
output – [inout] 输出 FP8/MXFP8 张量。
dbias – [out] 沿列缩减输入的結果。
workspace – [out] Workspace(工作区)张量。
stream – [in] 用于操作的 CUDA stream(流)。
-
void nvte_quantize_dbias_dsrelu(const NVTETensor input, const NVTETensor act_input, NVTETensor output, NVTETensor dbias, NVTETensor workspace, cudaStream_t stream)
计算输入上 Squared ReLU 操作的反向传播,然后 cast(转换)为 FP8/MXFP8。此外,沿列 reduce(缩减)Squared ReLU 反向传播的结果。如果输出张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block quantization(块量化) (MXFP8)。
此函数产生 2 个结果
output
等于cast(dact(input))
dbias
等于reduce(dact(input), dim=1)
使用空张量作为 workspace(工作区)调用此函数不会执行操作,而是将 workspace(工作区)张量的形状和类型设置为所需的值。
- 参数:
input – [in] 要 cast(转换)的输入张量。
act_input – [in] Activation(激活)输入张量。
output – [inout] 输出 FP8/MXFP8 张量。
dbias – [out] 沿列缩减输入的結果。
workspace – [out] Workspace(工作区)张量。
stream – [in] 用于操作的 CUDA stream(流)。
-
void nvte_dequantize(const NVTETensor input, NVTETensor output, cudaStream_t stream)
将输入张量从 reduced(缩减精度) cast(转换)为更高精度。如果输入张量的 scaling mode(缩放模式)设置为 NVTE_MXFP8_1D_SCALING,则将使用指定块形状的 block dequantization(块反量化) (MXFP8)。在 MXFP8 反量化的情况下,反量化值将存储到输出张量的 rowwise data(按行数据)中,无论是否使用 row- 或 columnwise scaling(按行或按列缩放)。
- 参数:
input – [in] 要 cast(转换)的输入 FP8/MXFP8 张量。
output – [inout] 输出张量。
stream – [in] 用于操作的 CUDA stream(流)。